0

來自博客文章Silverlight MultiBinding solution for Silverlight 4的代碼中的Converter屬性不是依賴項屬性,因此我無法將其與轉換器綁定(因爲技術原因,必須將其作爲部件實例化的Unity注入,而不是作爲用戶控件一部分的簡單靜態資源)。將轉換器綁定到Silverlight中的多重綁定

如何修改MultiBinding代碼以接受綁定轉換器?我試圖使它依賴屬性:

public IMultiValueConverter Converter { get { return (IMultiValueConverter)GetValue(ConverterProperty); } set { SetValue(ConverterProperty, value); } } 
public static DependencyProperty ConverterProperty = DependencyProperty.Register("Converter", typeof(IMultiValueConverter), typeof(IMultiValueConverter), null); 

,但我得到了

的DependencyProperty System.Windows.Data.IMultiValueConverter。轉換器不能在類型爲... Binding.MultiBinding的對象上設置。

如果這不是一個可行的選擇,我該怎麼綁定ConverterParameter財產或得到的東西來模擬轉換器的綁定到一個MultiBinding

+0

爲什麼不將數據綁定到MultiBinding呢?那麼在多值轉換器中有數據,並且如果數據更改,則轉換器也會觸發。 – punker76

+0

@ punker76,我不知道我跟着你。例如,我有一個視圖模型的多屬性的3個屬性,但他們必須運行一個轉換器才能在視圖中正確地格式化。該轉換器本身不能(據我所知)是一個靜態資源,因爲* it *具有注入其構造函數的依賴關係。 – Kit

+0

恩,不幸的是我還沒有理解你爲什麼要綁定一個轉換器? – punker76

回答

0

我解決了這個使用「模擬綁定」路線,但這不是我的偏好,如果有人有另一個答案。我所做的不是通過依賴注入來構建轉換器,而是使用服務位置來獲取所需的依賴關係。一般來說,我更喜歡依賴注入來服務位置。 「服務位置」是將Unity容器存儲在應用程序的全局資源中的問題;從那裏得到我所需要的並不難。

+0

我還沒有這個奢侈品,但是對於任何感興趣的人來說,這裏有一個SL5解決方案:http://www.codeproject.com/KB/silverlight/SilverlightMultiBinding.aspx?display=Mobile – Kit