2012-04-05 74 views
2

我正在使用WPF應用程序,在該應用程序中我使用telerik網格,並且我正在使用MVVM mpdel綁定yjay網格中的數據。我想禁用灰色該網格中的一個特定列基於我的布爾值。我設置的IsEnabled屬性爲假爲GridViewDataColumn,但它不是會受到影響該列....在XAML的telerik網格中禁用特定列使用MVVM

請誰能告訴我這個問題的解決?

在此先感謝....

我禁用網格列代碼:

<telerik:GridViewDataColumn Width="40" IsFilterable="False" HeaderTextAlignment="Center" Header="Max" DataMemberBinding="{Binding Constraint.MaxCountConstraint, Mode=TwoWay}" IsEnabled="{Binding MyBoolValue}" Tag="Exclude" /> 
+0

都和你一樣在這個例子中你使用一個明確的布爾值('的IsEnabled =「假」')或者是你想了'IsEnabled'綁定到您的視圖模型的值? – 2012-04-05 05:39:27

+0

是的!確切地說...我用綁定一個顯式值(IsEnabled =「{Binding MyBool}」)...因此,爲了測試目的,我將默認值設置爲IsEnabled =「False」 - 這也不起作用:-( – SuryaKavitha 2012-04-05 05:46:02

回答

0

我被這只是昨天咬傷。我的問題是內置的WPF DataGrid,但我認爲這是相同的根本原因。

基本問題是你的GridViewDataColumn是一個虛擬構造。它實際上並沒有顯示在屏幕上。顯示的內容是數據 - 數據頭的單元格,數據的單元格等等。這意味着GridViewDataColumn不是它所在窗口的可視化樹的一部分,所以綁定到默認視圖的DataContext失敗。如果您查看Visual Studio的「輸出」窗格,則會看到綁定錯誤。

我在Thomas Levesque's blog找到了解決方案,這有點破解,但它完美的工作。它涉及到創建一個名爲BindingProxy的小類,該類繼承Freezable,這是一個允許數據上下文超出可視化層次結構的WPF基類。您在視圖中創建一個BindingProxy作爲StaticResource並將其綁定到您的datacontext,然後讓您的GridViewDataColumn綁定到代理。

檢查出鏈接,我幾乎複製代碼示例逐字,它像一個魅力。

+0

A CellStyleSelector也可以工作... – 2012-10-08 00:10:39

1

IsReadOnlyBinding應該做的伎倆。

<telerik:GridViewDataColumn Width="40" IsFilterable="False" HeaderTextAlignment="Center" Header="Max" DataMemberBinding="{Binding Constraint.MaxCountConstraint, Mode=TwoWay}" IsReadOnlyBinding="{Binding MyBoolValue}" Tag="Exclude" /> 
相關問題