2014-04-11 61 views
1

我有WPFToolkit DataGrid至少有一個列綁定(通過代理對象,因爲列不是可視化樹的一部分)屬性。我希望將所有列切換到Visible,以便我可以基於DataGridColumnHeader(僅在列首次可見時創建)執行計算。完成計算後,我想重置列以使用之前設置的綁定。WPF是否可以在不破壞原始綁定的情況下臨時更改DataGridColumn的Visibility Dependency屬性?

我試圖獲取和存儲綁定表達式等,但沒有喜悅。我也嘗試使用DependencyObject.SetValue()方法非破壞性地更改屬性值,但這不會正確更改該值,更不用說保留原始綁定了。

任何想法?

回答

3

您需要撥打SetCurrentValue(),以便它不會清除綁定。 SetValue破壞舊的綁定。

從MSDN:

該方法用於通過以編程設置其自己的屬性中的一個的值,而無需禁用應用程序的聲明使用的屬性的一個分量。 SetCurrentValue方法更改屬性的有效值,但現有的觸發器,數據綁定和樣式將繼續工作。

給你有這個

<TextBox Text="{Binding TestProperty}"/> 

將覆蓋不管你提供綁定的SetValue。但是,如果調用SetCurrentValue,將確保該屬性具有給定值,但不會銷燬任何綁定。

請注意,您不應在依賴項屬性的setter/getter中使用SetCurrentValueSetCurrentValue在需要屬性接受給定值但不想覆蓋已針對您的屬性配置的任何綁定,觸發器或樣式的情況下更有用。

+1

謝謝。我會接受這個答案,但是我使用的是.Net 3.5,如果這個方法不可用的話。我沒有指定,所以你的答案是有效的,但你知道這個.Net 3.5版本嗎?我看不到任何候選人。 – Julius

相關問題