2012-04-04 22 views
1

我有一個IValueConverter類,用於在單元格中的值大於0(不重要)的情況下更改DataGrid單元格的背景顏色。如何將參數從代碼傳遞到ValueConverter

現在我想創建幾個包含這個數據網格的窗口實例。根據Window實例中定義的某些值,IValueConverter應該爲數據網格的單元格的背景着色或不着色。所以IValueConverter應根據Window類的實例做不同的工作。

現在的問題是:我無法在XAML中傳遞ConverterParameter,因爲該參數對於窗口的所有實例都是修復的。 我想通過編程方式將相關信息傳遞給IValueConverter類(這是必需的),但是如何訪問IValueConverter類的實例? 我目前的解決方案:我將一些靜態變量放入IValueConverter類,以便可以從Window類的實例訪問它們。但是這個解決方案很糟糕,因爲變量是靜態的,所以ValueConverter在每個窗口實例中的行爲方式都是一樣的。

有誰知道如何以編程方式從Window實例訪問IValueConverter實例? 謝謝!

回答

1

既然你不能進行數據綁定到ConverterParameter,您可以在以下兩種情況之一(另見this SO question):

  1. 依賴屬性添加到您的視圖模型,做一個多值轉換
  2. 傳整個視圖模型到你的綁定表達式
+0

@Phillip Schmid不幸的是我不知道如何管理你的第二個提議(我不知道語法)。我如何將整個視圖模型傳遞到綁定表達式中?這是否意味着我可以訪問ValueConverter中的視圖模型(即DataContext)?這將是一個好方法... – manton 2012-04-04 20:38:05

+0

Value = {Binding}沒有任何路徑意味着你傳遞了整個DataContext。此外,如果您添加轉換器,則會將DataContext傳遞給Converter – pluka 2012-04-04 20:53:56

相關問題