问题描述
在将操作按钮放入ItemRepeater中时出现问题。我以与ListView中相同的方式进行操作:
<muxc:ItemsRepeater Margin="0,24,0" ItemsSource="{x:Bind viewmodel.Team.Events,Mode=OneWay}">
<muxc:ItemsRepeater.ItemTemplate>
<DataTemplate x:DataType="models:Event">
<controls:Expander
HorizontalContentAlignment="Left"
Header="{x:Bind Name,Mode=OneWay}"
ExpandDirection="Down"
>
<StackPanel HorizontalAlignment="Left" Padding="24">
<TextBlock Text="{x:Bind Name}" FontSize="36" />
<TextBlock Text="{x:Bind Description}" />
<StackPanel Spacing="4" Orientation="Horizontal">
<TextBlock Text="{x:Bind Start}" />
<TextBlock Text="-" />
<TextBlock Text="{x:Bind End}" />
</StackPanel>
<TextBlock Text="{x:Bind Type}" />
<Grid Width="1000" Margin="0,0">
<Grid.ColumnDeFinitions>
<ColumnDeFinition Width="13*" />
<ColumnDeFinition Width="*" />
<ColumnDeFinition Width="13*" />
</Grid.ColumnDeFinitions>
<StackPanel Grid.Column="0">
<TextBlock FontSize="24" Text="Participations" />
<ListView ItemsSource="{x:Bind Participations}">
<ListView.ItemContainerStyle>
<Style targettype="ListViewItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
</Style>
</ListView.ItemContainerStyle>
<ListView.ItemTemplate>
<DataTemplate x:DataType="models:Participation">
<Grid>
<Grid.ColumnDeFinitions>
<ColumnDeFinition Width="9*" />
<ColumnDeFinition Width="1*" />
</Grid.ColumnDeFinitions>
<TextBlock Text="{x:Bind Username}" />
<FontIcon Grid.Column="1" Glyph="{x:Bind Confirmed,Converter={StaticResource BooleanIconConverter}}"></FontIcon>
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</StackPanel>
<StackPanel Grid.Column="2">
<TextBlock FontSize="24" Text="discrepancies" />
<Grid Margin="8">
<Grid.ColumnDeFinitions>
<ColumnDeFinition Width="1*" />
<ColumnDeFinition Width="1*" />
<ColumnDeFinition Width="2*" />
<ColumnDeFinition Width="1*" />
<ColumnDeFinition Width="1*" />
</Grid.ColumnDeFinitions>
<TextBlock Text="Player" />
<TextBlock Text="Type" Grid.Column="1"/>
<TextBlock Text="Reason" Grid.Column="2"/>
<TextBlock Text="Delay" Grid.Column="3"/>
</Grid>
<ListView ItemsSource="{x:Bind discrepancies}">
<ListView.ItemContainerStyle>
<Style targettype="ListViewItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
</Style>
</ListView.ItemContainerStyle>
<ListView.ItemTemplate>
<DataTemplate x:DataType="models:discrepancy">
<Grid>
<Grid.ColumnDeFinitions>
<ColumnDeFinition Width="1*" />
<ColumnDeFinition Width="1*" />
<ColumnDeFinition Width="2*" />
<ColumnDeFinition Width="1*" />
<ColumnDeFinition Width="1*" />
</Grid.ColumnDeFinitions>
<TextBlock Text="{x:Bind Username}" />
<TextBlock Text="{x:Bind Type}" Grid.Column="1"/>
<TextBlock Text="{x:Bind Reason}" Grid.Column="2"/>
<TextBlock Text="{x:Bind DelayLength}" Grid.Column="3"/>
<Button Grid.Column="4" HorizontalAlignment="Right">
<Button.Flyout>
<Flyout>
<StackPanel>
<TextBlock Style="{ThemeResource BaseTextBlockStyle}" Text="Are you sure ?" Margin="0,12" />
<Button Click="Deletediscrepancy" Content="Yes" />
</StackPanel>
</Flyout>
</Button.Flyout>
<StackPanel Spacing="8" Orientation="Horizontal">
<FontIcon Glyph="" />
</StackPanel>
</Button>
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</StackPanel>
</Grid>
<StackPanel Spacing="16" Orientation="Horizontal" FlowDirection="RightToLeft">
<Button Click="HandleClickAdddiscrepancy">
<StackPanel Spacing="8" Orientation="Horizontal">
<TextBlock Text="Add discrepancy"></TextBlock>
<FontIcon Glyph=""/>
</StackPanel>
</Button>
<Button>
<StackPanel Spacing="8" Orientation="Horizontal">
<TextBlock Text="Edit Event"></TextBlock>
<FontIcon Glyph=""/>
</StackPanel>
</Button>
<Button>
<StackPanel Spacing="8" Orientation="Horizontal">
<TextBlock Text="Delete Event"></TextBlock>
<FontIcon Glyph=""/>
</StackPanel>
</Button>
</StackPanel>
</StackPanel>
</controls:Expander>
</DataTemplate>
</muxc:ItemsRepeater.ItemTemplate>
</muxc:ItemsRepeater>
在我的代码后面:
private void HandleClickAdddiscrepancy(object sender,RoutedEventArgs e) {
var evt = (sender as Button)?.DataContext as Event;
if(viewmodel.AdddiscrepancyCommand.CanExecute(evt)) {
viewmodel.AdddiscrepancyCommand.Execute(evt);
}
}
但是在此代码隐藏方法中,我按钮的DataContext为null。它不是列表的currend元素,我单击的按钮在哪部分? 我应该如何继续实现这种功能? 预先感谢!
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)