数据网格无法双击编辑列

3
我正在一个简单的窗口中使用 WPF DataGrid 来展示由一个数据模型提供的一些数据。
<DataGrid x:Name="unitTable" ItemsSource="{Binding Units}" AutoGenerateColumns="False">
    <DataGrid.Columns>
         <DataGridCheckBoxColumn Binding="{Binding Path=IsChosen, Mode=TwoWay}" Header="Chosen"></DataGridCheckBoxColumn>
         <DataGridTextColumn Binding="{Binding Path=Name, Mode=TwoWay}" Header="Name"></DataGridTextColumn>
         <DataGridTextColumn IsReadOnly="True" Binding="{Binding Path=IsActive, Mode=TwoWay, Converter={StaticResource boolToActive}}" Header="Active"></DataGridTextColumn>
    </DataGrid.Columns>
</DataGrid>

这个模型一切正常,但有一个问题是例如复选框的值需要双击列才能编辑。

我想到了这个解决方案:

<Style TargetType="DataGridCell" x:Key="NoDoubleClick">
      <Style.Triggers>
            <Trigger Property="IsMouseOver" Value="True">
                 <Setter Property="IsEditing" Value="True" />
            </Trigger>
      </Style.Triggers>
</Style>

在我将样式分配给复选框和第一个文本列后,它实际上可以工作 :)

过了一会儿,我意识到,当将“NoDoubleClick”样式分配给某一列时,模型不再更新。

有人可以告诉我错在哪里吗?


1
将绑定的UpdateSourceTrigger设置为PropertyChanged。 - Manfred Radlwimmer
它起作用了,非常感谢! - Lorenz Killer
不用谢,我会将其添加为答案,这样您就可以关闭问题了。 - Manfred Radlwimmer
2个回答

2

DataGridColumns通常只在编辑单元格失去焦点时更新绑定的数据。为了解决这个问题并使其与您的样式配合使用,请将绑定的UpdateSourceTrigger设置为PropertyChanged


0

Manfred Radlwimmer 是正确的。

UpdateSourceTrigger=PropertyChanged

需要更新模型。

  <DataGrid x:Name="unitTable" ItemsSource="{Binding Units}" AutoGenerateColumns="False">
<DataGrid.Columns>
     <DataGridCheckBoxColumn Binding="{Binding Path=IsChosen, Mode=TwoWay}" Header="Chosen"></DataGridCheckBoxColumn>
     <DataGridTextColumn Binding="{Binding Path=Name, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Header="Name"></DataGridTextColumn>
     <DataGridTextColumn IsReadOnly="True" Binding="{Binding Path=IsActive, Mode=TwoWay, Converter={StaticResource boolToActive}}" Header="Active"></DataGridTextColumn>
</DataGrid.Columns>


谢谢确认,但我们真的不需要再次得到相同的答案,对吧?(尤其是因为楼主已经确认它有效) - Manfred Radlwimmer
为什么不呢?在代码中展示是很好的做法。或者你可以编辑你的帖子并加入代码,这样更容易理解。就是这样。 - na th

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接