我有一個定義串列視圖的 xaml 檔案。對應的 xaml.cs 檔案,我有兩個方法 CheckBox_Checked 和 CheckBox_UnChecked。復選框只是該行中的另一列。我的問題是,如何將 listview 行作為 CheckBox_Checked 方法中的引數傳遞?
目的是知道檢查了哪條線。問題是可以選中多個復選框,因此,我需要確切知道選中了哪個復選框。
ListView 作為系結到自定義類的串列
每個 gridviewcolumn 都是自定義類中的變數

uj5u.com熱心網友回復:
您可以在事件處理程式DataContext中將引數轉換為您的資料型別:sender
private void CheckBox_Checked(object sender, RoutedEventArgs e)
{
CheckBox checkBox = (CheckBox)sender;
YourCustomClass dataObject = checkBox.DataContext as YourCustomClass;
if (dataObject != null)
{
//access the xxx and yyy properties of YourCustomClass here...
}
}
uj5u.com熱心網友回復:
我將簡單解釋如何判斷在代碼隱藏中選擇了哪個復選框。
XAML
<ListView x:Name="ListView02" Grid.Column="1">
<ListView.View>
<GridView>
<GridViewColumn Header="Check">
<GridViewColumn.CellTemplate>
<DataTemplate>
<CheckBox Checked="CheckBox_Checked" IsChecked="{Binding IsChecked, Mode=TwoWay}" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn DisplayMemberBinding="{Binding Name}" Header="Name" />
<GridViewColumn DisplayMemberBinding="{Binding Type}" Header="Type" />
<GridViewColumn Header="Image">
<GridViewColumn.CellTemplate>
<DataTemplate>
<Border Background="Gray">
<Image
Width="32"
Height="32"
Source="{Binding ImagePath}" />
</Border>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
代碼
public partial class ListView1 : Window
{
private List<Animal> _list;
public ListView1()
{
InitializeComponent();
_list = new List<Animal>
{
new Animal { IsChecked=true, Name = "Cat", Type = "animal", ImagePath = @"Images\cat.png"},
new Animal { IsChecked=false, Name = "Dog", Type = "animal", ImagePath = @"Images\dog.png"},
new Animal { IsChecked=true, Name = "Fish", Type = "fish", ImagePath = @"Images\fish.png"},
new Animal { IsChecked=false, Name = "Flower", Type = "plant", ImagePath = @"Images\flower.jpg"},
};
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
ListView01.ItemsSource = _list;
ListView02.ItemsSource = _list;
ListBox.ItemsSource = _list;
DataGrid.ItemsSource = _list;
}
private void CheckBox_Checked(object sender, RoutedEventArgs e)
{
//You can check the data in this part.
var data = ((CheckBox)sender).DataContext as Animal;
if(data == null)
{
return;
}
Debug.WriteLine($"{data.Name} {data.Type} {data.ImagePath}");
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/520486.html
標籤:C#wpfxml
