2012-07-04 151 views
3

我試圖添加一個資源,這是一個標準的IValueConverter實例。我想在XAML中使用該轉換器,但我得到的只是一個例外,表示沒有使用提供的密鑰找到資源。從代碼隱藏添加資源並在XAML中使用

下面的代碼:

public CallLogs(IMessenger messenger, IKernel kernel) 
    { 
     InitializeComponent(); 

     _kernel = kernel; 
     var phoneToContactConverter = _kernel.Get<PhoneNumberToContactConverter>(); 
     Resources.Add("PhoneNumberToContactConverter", phoneToContactConverter); 
    } 

和這裏的XAML

<TextBlock Text="{Binding Number, Converter={StaticResource PhoneNumberToContactConverter}, ConverterParameter={Binding}}" /> 

我得到一個異常說

{「無法找到資源名爲 'PhoneNumberToContactConverter' 資源 名。區分大小寫。「}。

任何想法如何從後面的代碼引用資源?

謝謝。

+0

@ vossad01感謝它的工作:)。你可以發表這個評論作爲答案,我可以接受嗎? :) – Davita

+0

爲什麼不在你的頁面上創建一個(依賴)屬性並綁定它,而不是把東西放在資源中...... – Kek

回答

4

我沒有訪問C#編譯器在此刻所以不能嘗試的東西出來,但嘗試移動在InitializeComponent()在添加資源之後。 InitializeComponent執行XAML中指定的所有內容,但您綁定的資源在該點不存在。

+0

看到它後,它變得不錯而且明顯。謝謝! –

0

你好,你可以嘗試動態的ressource(上型的ressource不匹配)

<TextBlock Text="{Binding Number, Converter={DynamicResource PhoneNumberToContactConverter}, ConverterParameter={Binding}}" />