我有一个简单的类,我希望能够将属性与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'”。我可以选中该框,但它不会更新“选择”属性。我有一个参数列表AccumList
,其中没有几个对象。我也AccumGrid.ItemSources = AccumList
在这里我想念什么?
我已经尝试过<DataGridCheckBoxColumn Header="Select" Binding="{Binding Path=Select, Mode=TwoWay}"/>
,并且可以正常运行,但是如前所述,我不想双击复选框。
答案 0 :(得分:0)
将绑定的UpdateSourceTrigger
设置为PropertyChanged
(请注意,Mode="TwoWay"
是多余的,因为这是此属性的默认设置):
<CheckBox IsChecked="{Binding Select, UpdateSourceTrigger=PropertyChanged}" />
但是不确定为什么需要这样做,因为DefaultUpdateSourceTrigger
依赖项属性的FrameworkPropertyMetadata
的{{1}}值已经是CheckBox.IsCheckedProperty
。