C# wpf mvvm中的复选框问题
当我在C# wpf mvvm中的复选框问题,c#,wpf,mvvm,checkbox,C#,Wpf,Mvvm,Checkbox,当我在GridView中使用WPF和MVVM时,我遇到了问题 <GridViewColumn.CellTemplate> <DataTemplate> <CheckBox IsChecked="{Binding IsSelected}"/> </DataTemplate> </GridViewColumn.CellTemp
GridView
中使用WPF和MVVM时,我遇到了问题
<GridViewColumn.CellTemplate>
<DataTemplate>
<CheckBox IsChecked="{Binding IsSelected}"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
如何选择所选行中的数据,即该行的
复选框
值是否为真?您需要设置一个IEnumerable
/IEnumerable
,用于保存每个复选框
的IsChecked
信息。差不多
public class CheckedItem
{
public CheckedItem() { }
public CheckedItem(string text, bool isChecked) : this()
{
this._text = text;
this._isChecked = isChecked;
}
private string _text;
public String Text;
{
get { return _text; }
set
{
if (_text == value)
return;
_text = value;
OnPropertyChanged("IsSelected");
}
}
private bool _isSelected;
public bool IsSelected;
{
get { return _isSelected; }
set
{
if (_isSelected == value)
return;
_isSelected = value;
OnPropertyChanged("IsSelected");
}
}
}
private ObservableCollection<CheckedItem> checkItemCollection =
new ObservableCollection<CheckedItem>();
public ObservableCollection<CheckedItem> CheckItemCollection
{
get { return checkItemCollection; }
set
{
if (checkItemCollection == value)
return;
checkItemCollection = value;
OnPropertyChanged("CheckItemCollection");
}
}
这是在没有IDE的情况下完成的,因此您可能需要对其进行调整以使其正常工作
我希望这有帮助。先生,那么如何检查特定行是选中还是未选中?也就是说,复选框的值是真还是假?您可以像
CheckedItemCollection[someRowIndex]一样查找该行。IsChecked
。。。集合应保持您放置项目的顺序。如果行索引可以通过UI更改,那么您必须向SomeClass
类添加索引持有者。。。
public class CheckedItem
{
public CheckedItem() { }
public CheckedItem(string text, bool isChecked) : this()
{
this._text = text;
this._isChecked = isChecked;
}
private string _text;
public String Text;
{
get { return _text; }
set
{
if (_text == value)
return;
_text = value;
OnPropertyChanged("IsSelected");
}
}
private bool _isSelected;
public bool IsSelected;
{
get { return _isSelected; }
set
{
if (_isSelected == value)
return;
_isSelected = value;
OnPropertyChanged("IsSelected");
}
}
}
private ObservableCollection<CheckedItem> checkItemCollection =
new ObservableCollection<CheckedItem>();
public ObservableCollection<CheckedItem> CheckItemCollection
{
get { return checkItemCollection; }
set
{
if (checkItemCollection == value)
return;
checkItemCollection = value;
OnPropertyChanged("CheckItemCollection");
}
}
<GridView ItemsSource="{Binding Path=CheckedItemCollection,
Mode=TwoWay,
UpdateSourceTrigger=PropertyChanged,
IsAsync=True}"
<GridView.Columns>
<GridViewColumn.CellTemplate>
<DataTemplate>
<CheckBox Content="{Binding Text}"
IsChecked="{Binding IsSelected,
Mode=TwoWay,
UpdateSourceTrigger=PropertyChanged,
IsAsync=True}"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridView.Columns>
</GridView>