Gridcolumn中的单选按钮不会触发绑定

时间:2019-09-05 08:40:52

标签: c# wpf radio-button devexpress gridcontrol

我有两个devexpress网格列,每个列都有一个单选按钮。

在后面的代码中,当我为绑定到单选按钮的属性设置一个值时,将采用绑定。但是,当我在视图中更改选定的单选按钮时,选定的不会触发该属性。

我想念什么?

<dxg:GridColumn Binding="{Binding IsOrder}"
                      Header="Order" 
                      Visible="{Binding IsVisible}"
                      Width="60">
  <dxg:GridColumn.CellTemplate>
        <DataTemplate>
            <RadioButton IsChecked="{Binding Path=Value, Mode=TwoWay}"
                         GroupName="{Binding RowData.Row.Number}"
                         VerticalAlignment="Center"
                         HorizontalAlignment="Center"
                        IsEnabled="{Binding 
                               Path=View.DataContext.StatusNotHandled}"/>
       </DataTemplate>
</dxg:GridColumn.CellTemplate>

<dxg:GridColumn Binding="{Binding IsNotOrder}"
                      Header="Not order" 
                      Visible="{Binding IsVisible}"
                      Width="60">
  <dxg:GridColumn.CellTemplate>
        <DataTemplate>
            <RadioButton IsChecked="{Binding Path=Value, Mode=TwoWay}"
                         GroupName="{Binding RowData.Row.Number}"
                         VerticalAlignment="Center"
                         HorizontalAlignment="Center"
                        IsEnabled="{Binding 
                                Path=View.DataContext.StatusNotHandled}"/>
       </DataTemplate>
</dxg:GridColumn.CellTemplate>

2 个答案:

答案 0 :(得分:0)

问题的原因很可能是您试图将非DX控件用作GridColumn的编辑的事实,但DevExpress明确建议不要这样做。例如,尝试用DX-CheckEdit替换RadioButton。

我的经验总结:

  1. 请勿将非DX控件用作GridControl的InplaceEdits。
  2. 在CellTemplate中分配给DX编辑后,它们才能正常工作 它们的名称必须设置为“ PART_Editor”。省略将导致导航等问题。
  3. 使用GridColumn.FieldName属性代替绑定。这应该使InplaceEdit自动从其Column继承绑定。

答案 1 :(得分:0)

IsChecked的绑定更改为RowData.Row.IsOrder,这可能会解决您的选择问题。您可以阅读有关在RowData.RowValue here上使用Data的更多信息。

另一方面,如@Sancho Panza所说,在处理CellTemplate时,最好始终坚持使用BaseEdit的后代。

这是在CellTemplate中使用BaseEdit后代的优点之一:

  

对于DevExpress数据编辑器(BaseEdit类的后代),可以将编辑器的Name属性设置为PART_Editor。在这种情况下,GridControl会自动调整其外观并将编辑器与ColumnBase.FieldName或ColumnBase.Binding属性指定的源字段进行同步。
  您可以对名为PART_Editor的编辑器使用任何绑定。在这种情况下,将禁用GridControl获取/设置编辑器值的逻辑。

使用BaseEdit后代或WPF RadioButton的最终决定权由您决定,但我还建议您坚持使用BaseEdit。