如何控制允许的复选框状态数

本文关键字:复选框 状态 何控制 控制 | 更新日期: 2023-09-27 17:57:56

我使用的是silverlight 4工具包gridcontrol,并且使用的是自动生成的列。我的布尔字段显示为三态复选框(true、false、null)。

public bool? Enabled { get; set; }

如何强制它只使用两种状态(真/假)。此时不能更改字段类型。

@Bala

[XAML]

<sdk:DataGrid Grid.Row="1" Grid.Column="1" x:Name="liveGrid" 
HorizontalAlignment="Center"
VerticalScrollBarVisibility="Hidden"  HorizontalContentAlignment="Center"
ItemsSource="{Binding MyDatasource}" AutoGenerateColumns="True" />

只是想一想:UIHint数据注释是否存在?

可能的解决方案

下面是@Rick,我有一个可行的解决方案:

[XAML]

<sdk:DataGrid Grid.Row="1" Grid.Column="1" x:Name="liveGrid" 
HorizontalAlignment="Center"
VerticalScrollBarVisibility="Hidden"  HorizontalContentAlignment="Center"
AutoGeneratingColumn="viewModel_AutoGeneratingColumn" 
ItemsSource="{Binding MyDatasource}" AutoGenerateColumns="True" />

[查看]

 private void viewModel_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
    {
        if ("Enabled" == e.PropertyName)
        {
            DataGridCheckBoxColumn checkBox = e.Column as DataGridCheckBoxColumn;
            checkBox.IsThreeState = false;
        }
    }

如何控制允许的复选框状态数

您可以继续使用自动生成的列自定义这些列。下面是一篇描述如何自定义自动生成列的文章:

  • 如何:在DataGrid控件中自定义自动生成的列

该技术主要包括挂接DataGrid.AutoGeneratingColumn事件。

如果您遵循该过程,您所需要做的就是找到您的列(例如,按属性名称),并将IsThreeState设置为false:

  • DataGridCheckBoxColumn.IsThreeState属性