2011-05-26 66 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