[英]How to bind a property with Checkbox in DataGrid?
我有一個簡單的類,我希望能夠將屬性與DataGrid綁定。
public class Param : INotifyPropertyChanged
{
private bool isParamSelected;
public bool Select
{
get { return isParamSelected; }
set
{
isParamSelected = value;
NotifyPropertyChanged();
}
}
public string Name { get; set; }
public string Description { get; set; }
public event PropertyChangedEventHandler PropertyChanged;
private void NotifyPropertyChanged([CallerMemberName] String propertyName = "")
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
}
這是我的.xaml代碼:我需要將復選框作為第一列。 我不使用DataGridCheckBoxColumn,因為它需要單擊兩次才能選中一個框。 通過一個簡單的CheckBox,我可以單擊一下進行檢查。
<DataGrid Name="AccumGrid" AutoGenerateColumns="False">
<DataGrid.Columns >
<DataGridTemplateColumn Header="Select">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox IsChecked="{Binding Path=Select, Mode=TwoWay}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn Header="Name" Binding="{Binding Name}"/>
<DataGridTextColumn Header="Description" Binding="{Binding Description}"/>
</DataGrid.Columns>
</DataGrid>
我的問題是,當我將Select屬性綁定到CheckBox <CheckBox IsChecked="{Binding Path=Select, Mode=TwoWay}" />
,它無法識別它並給我“無法解析符號'Select'”。 我可以選中該框,但它不會更新“選擇”屬性。 我有一個帶有少量對象的Params AccumList
參數列表。 我也做AccumGrid.ItemSources = AccumList
我在這里AccumGrid.ItemSources = AccumList
什么?
我已經嘗試過<DataGridCheckBoxColumn Header="Select" Binding="{Binding Path=Select, Mode=TwoWay}"/>
,它可以正常運行,但是如前所述,我不想雙擊復選框。
將綁定的UpdateSourceTrigger
設置為PropertyChanged
(請注意, Mode="TwoWay"
是多余的,因為這是此屬性的默認值):
<CheckBox IsChecked="{Binding Select, UpdateSourceTrigger=PropertyChanged}" />
但是,不確定為什么這樣做是必需的,因為CheckBox.IsCheckedProperty
依賴項屬性的FrameworkPropertyMetadata
的DefaultUpdateSourceTrigger
值已經是PropertyChanged
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.