c# - Datagrid 没有双击编辑列

标签 c# wpf wpfdatagrid

我在一个简单的窗口中使用 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>

在我将样式分配给 Checkbox 和第一个 TextColumn 之后,它实际上起作用了:) 一段时间后,我意识到,当样式“NoDoubleClick”被分配给列时,模型不再更新。

谁能告诉我我做错了什么?

最佳答案

DataGridColumns 通常只在编辑的单元格失去焦点时更新绑定(bind)数据。要解决此问题并使其与您的样式一起使用,请将绑定(bind)的 UpdateSourceTrigger 设置为 PropertyChanged

关于c# - Datagrid 没有双击编辑列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49125600/

相关文章:

c# - Visual Studio 2008 断点可见样式

c# - 同一台计算机上两个不同 WPF 应用程序之间的通信

c# - WPF - 在大量控件上设置 Tab 键顺序

wpf - 在哪里可以找到免费的WPF Datagrid样式?

c# - 选择数据网格(wpf)中的行索引

c# - 为什么我不能使用 LINQ to SQL 将数据更新到数据库中?

c# - C# 中这两个 List<char> 初始化的区别

c# - 从 usercontrol viewmodel 到 customUsercontrol Viewmodel 的 Unity 依赖注入(inject)

wpf - DataGridTextColumn.MaxLength?

c# - C++ 中是否有 C# `Encoding.UTF8.GetString` 等价物?