我有一个WPF DataGridCheckBoxColumn,它绑定到一个实现INotifyPropertyChanged的对象,如下所示:
DataGridCheckBoxColumn Binding="{Binding Path=IsSelected}" CellStyle="{StaticResource MyDataGridCheckBoxCellStyle}"/>
以下是相关对象:
public class ListItem : INotifyPropertyChanged
{
public int ID { get; set; }
private bool isSelected = false;
public bool IsSelected { get { return isSelected; } set { isSelected = value; OnChanged("IsSelected"); } }
public event PropertyChangedEventHandler PropertyChanged;
private void OnChanged(string prop)
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(prop));
}
}
一切都按预期工作,除了为了将Checkbox设置为Checked,我需要双击,以便先选择列,然后设置复选框值。
所以,我决定实现一个Style触发器,如下所示:
<Style x:Key="MyDataGridCheckBoxCellStyle" TargetType="DataGridCell">
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True" >
<Setter Property="IsEditing" Value="True" />
</Trigger>
</Style.Triggers>
</Style>
现在我可以单击以检查复选框,但我的绑定不再起作用。知道这里发生了什么吗?为什么设置样式触发器会删除绑定?
答案 0 :(得分:1)
更改样式可能会导致默认模板出现问题。您很可能需要复制整个样式+模板,然后根据您的需要进行修改。不过,你可以尝试这个http://wpf.codeplex.com/wikipage?title=Single-Click%20Editing。