我有一個WPF數據網格綁定到使用MVVM的數據表。這個數據表中有幾列,其中一個是可爲空的布爾值。在DataGrid呈現,布爾列(主要包含空值)示出了填塊複選框,看起來可怕:綁定到一列數據網格並應用樣式
我想樣式添加到該列隱藏所有複選框,如果值爲空。 此問題與apply a template to a column of datagrid類似,但由於綁定數據表中的列的數量和位置可能發生更改,因此我無法手動定義XAML中的每一列。
我的數據表在所述視圖模型定義爲:
public DataTable Data
{
get { return data; }
set
{
data = value;
OnPropertyChanged("Data");
}
}
和在類的構造通過調用SQL存儲過程返回DataTable被設置。這個存儲過程可能因用途不同而不同,因此會在不同的時間生成不同的數據表。
目前,我有這樣的代碼:
<DataGrid ItemsSource="{Binding Data, UpdateSourceTrigger=PropertyChanged}" IsReadOnly="True">
<DataGrid.Columns>
<DataGridCheckBoxColumn Binding="{Binding Paid}" Header="Paid?">
<DataGridCheckBoxColumn.ElementStyle>
<Style TargetType="CheckBox">
<Style.Triggers>
<Trigger Property="IsChecked" Value="{x:Null}">
<Setter Property="Visibility" Value="Hidden"/>
</Trigger>
</Style.Triggers>
</Style>
</DataGridCheckBoxColumn.ElementStyle>
</DataGridCheckBoxColumn>
</DataGrid.Columns>
</DataGrid>
新添加的列不顯示所需的複選框效果(僅顯示具有值的複選框),但原始的「付費」列未觸及。
有人請讓我知道如何將我的風格綁定到這一列嗎?
是'AutoGenerateColumns'設置爲true DataGrid中?如果沒有,你可以請你發佈所有'DataGrid.Columns'定義? – toadflakz
這是我的整個數據網格定義。沒有其他datagrid.columns定義,因爲網格從itemsource'Data'中取得它(我將在視圖模型中包含該表的定義 - 這只是一個SQL調用),AutoGenerateColumns未設置,我相信這意味着它默認爲假? –
'AutoGenerateColumns'默認爲'true'。 – toadflakz