2011-05-26 63 views
3

我正在使用silverlight 4工具包gridcontrol,并使用自动生成的列。我的布尔型字段显示为三态复选框(true,false,null)。如何控制允许的复选框状态的数量?

public bool? Enabled { get; set; } 

如何强制它只使用两种状态(true/false)。现在不能更改字段类型。

@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; 
     } 
    } 
+0

你可以发表你的XAML的格? – 2011-05-26 16:56:41

回答

1

您可以继续使用自动生成列自定义这些列。下面是介绍如何自定义自动生成列的项目:

该技术主要由挂钩DataGrid.AutoGeneratingColumn事件。

如果您按照程序,所有你需要做的是找到你的列(按属性名称EG),并设置IsThreeStatefalse

+0

我希望有一个更简单的解决方案(可能使用数据注释)。我将从这些链接开始,谢谢。 – 2011-05-26 17:14:45

+0

_设计_绑定子系统完全不关注像属性这样的属性的元数据。逻辑是,任何你可能想要的元数据都不会处理所有的情况。因此,属性只是属性**,我们必须在适用于我们的应用程序的情况下实现元数据。你**可以**使用注释,但**你**必须使它们意味着什么。 – 2011-05-26 17:20:59