我对这件事情有新意见,我有一个问题,经过一些研究,我找不到任何有效的答案...... 我有这个XAML代码:
<ListView Margin="0,0,0,0" Name="EpisodesList">
<ListView.View>
<GridView>
<GridViewColumn Header="Season" Width="Auto">
<GridViewColumn.CellTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text="{Binding Season}"/>
</StackPanel>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="Episode" Width="50">
<GridViewColumn.CellTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text="{Binding Episode}"/>
</StackPanel>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="Assitido" Width="50">
<GridViewColumn.CellTemplate>
<DataTemplate>
<StackPanel>
<CheckBox IsChecked="{Binding Watched}"/>
</StackPanel>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="Baixar" Width="50">
<GridViewColumn.CellTemplate>
<DataTemplate>
<StackPanel>
<CheckBox IsChecked="{Binding Download}"/>
</StackPanel>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
这背后是XAML:
public SerieInfo()
{
InitializeComponent();
List<Episodes> episodes = new List<Episodes>();
for (int i = 0; i < 10; i++)
{
episodes.Add(new Episodes()
{
Season = i.ToString(),
Episode = (i + 2).ToString(),
Download = true,
Watched = true,
});
}
EpisodesList.ItemsSource = episodes;
}
public class Episodes
{
public string Season { get; set; }
public string Episode { get; set; }
public bool Download { get; set; }
public bool Watched { get; set; }
}
当取消选中或检查任何复选框时,我需要获取该行的季节值,例如......
+--------+---------+---------+----------+
| Season | Episode | Watched | Download |
+--------+---------+---------+----------+
| 1 | 3 | Checked |Unchecked | <-- Get the "1" value when any checkbox change
+--------+---------+---------+----------+
答案 0 :(得分:1)
您可以使用复选框的已选中和未选中的事件来获取季节。请参阅下面的代码。
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
List<Episodes> episodes = new List<Episodes>();
for (int i = 0; i < 10; i++)
{
episodes.Add(new Episodes()
{
Season = i.ToString(),
Episode = (i + 2).ToString(),
Download = true,
Watched = true,
});
}
EpisodesList.ItemsSource = episodes;
}
private void CheckBox_Checked(object sender, RoutedEventArgs e)
{
CheckBox chk = sender as CheckBox;
Episodes epi = chk.DataContext as Episodes;
var season = epi.Season;
}
private void CheckBox_Unchecked(object sender, RoutedEventArgs e)
{
CheckBox chk = sender as CheckBox;
Episodes epi = chk.DataContext as Episodes;
var season = epi.Season;
}
}
和XAML
<ListView Margin="0,0,0,0" Name="EpisodesList">
<ListView.View>
<GridView>
<GridViewColumn Header="Season" Width="Auto">
<GridViewColumn.CellTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text="{Binding Season}"/>
</StackPanel>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="Episode" Width="50">
<GridViewColumn.CellTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text="{Binding Episode}"/>
</StackPanel>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="Assitido" Width="50">
<GridViewColumn.CellTemplate>
<DataTemplate>
<StackPanel>
<CheckBox IsChecked="{Binding Watched}" Checked="CheckBox_Checked" Unchecked="CheckBox_Unchecked" />
</StackPanel>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="Baixar" Width="50">
<GridViewColumn.CellTemplate>
<DataTemplate>
<StackPanel>
<CheckBox IsChecked="{Binding Download}" Checked="CheckBox_Checked" Unchecked="CheckBox_Unchecked"/>
</StackPanel>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>