【问题标题】:how to implement xamcheckeditor disable style如何实现 xamcheckeditor 禁用样式
【发布时间】:2012-10-15 19:32:10
【问题描述】:

当您将 bool 值绑定到 xamdatagrid 时,该列将自动使用 xamcheckeditor 来显示数据。我想使用外部按钮来控制复选框列的 allowedit,当我更改 allowedit 属性时,列中的复选框将应用禁用/启用样式(变为灰色) 在我的资源字典中,我为 xamcheckeditor 编写了一个样式:

<ControlTemplate.Triggers>
    <Trigger Property="IsReadOnly" Value="True">
        <Setter TargetName="PART_FocusSite" Property ="IsEnabled" Value="False" />
     </Trigger>
</ControlTemplate.Triggers>

因此,当该字段不可编辑时,复选框将显示为禁用。

我还有一个按钮来控制列的allowedit,当按钮被点击时,它会调用:

grid.FieldsLayouts[0].Fields["Enabled"].Settings.AllowEdit = true/false

但启用/禁用操作不会自动应用,我必须单击过滤器刷新网格才能应用它们...

请告知我应该如何实施,一旦单击按钮设置字段允许它,复选框将自动启用。

谢谢!

恩州

【问题讨论】:

    标签: wpf infragistics xamdatagrid


    【解决方案1】:

    如果您只想在 XamCheckEditor 所属的字段将 AllowEdit 设置为 false/true 时禁用/启用 XamCheckEditor,那么您只需创建一个直接附加到 AllowEdit 的绑定的样式。

    <local:NullableBooleanConverter x:Key="converter"/>
    
    <Style TargetType="{x:Type igEditors:XamCheckEditor}" >
        <Setter Property="IsEnabled" Value="{Binding RelativeSource={RelativeSource AncestorType={x:Type igDP:CellValuePresenter}},
            Path=Field.Settings.AllowEdit, Converter={StaticResource converter}}"/>
    </Style>
    

    由于 XamCheckEditor 位于字段的每个单元格内,这意味着它位于 CellValuePresenter 内。您可以使用 RelativeSource 绑定来获取它,然后访问它的属性。它的属性之一是它所属的字段。所以知道了这一点,您可以直接绑定到 AllowEdit。

    现在 AllowEdit 是一个可以为空的布尔值 (bool?),默认为 null,因此您需要使用转换器来确保数据正确传递到 XamCheckEditor。

    public class NullableBooleanConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            // If value is null then we really mean true.
            if (value == null)
                return true;
    
            // value is not null so it's either true or false.
            return value;
        }
    
        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            throw new NotImplementedException();
        }
    }
    

    您现在需要做的就是像原来一样设置 AllowEdit 属性,它会自动更新 XamCheckEditor。

    【讨论】:

      猜你喜欢
      • 2020-12-20
      • 2023-03-15
      • 2013-09-20
      • 1970-01-01
      • 1970-01-01
      • 2020-10-26
      • 2012-08-25
      • 1970-01-01
      • 2010-11-06
      相关资源
      最近更新 更多