我有一個值轉換器,我想綁定一個屬性,但綁定永遠不會發生,即我的值轉換器中的依賴項屬性始終爲null
。
背景:我想將一個枚舉綁定到組合框,但是可以控制正在顯示的文本。無法綁定的靜態資源轉換器上的屬性
我實現價值轉換器是這樣的:
public class EnumDisplayer : DependencyObject, IValueConverter
{
public static readonly DependencyProperty LocalizerProperty =
DependencyProperty.Register(
"Localizer", typeof(ILocalizer), typeof(EnumDisplayer),
new PropertyMetadata(default(ILocalizer), OnLocalizerChanged));
public ILocalizer Localizer
{
get { return (ILocalizer) GetValue(LocalizerProperty); }
set { SetValue(LocalizerProperty, value); }
}
private static void OnLocalizerChanged(DependencyObject d,
DependencyPropertyChangedEventArgs e)
{
// ...
}
//...
}
我將它綁定這樣的:
<UserControl.Resources>
<Common:EnumDisplayer x:Key="companyTypes"
Localizer="{Binding CompanyTypeEnumLocalizer}" />
<!-- ... -->
</UserControl.Resources>
我的階級是EnumDisplayer改編版。
我不明白,爲什麼OnLocalizerChanged
永遠不會被調用。誰能提供一些見解?
你是對的,它看起來像我不能像我想的那樣綁定到轉換器。我開始懷疑這是否正確?我認爲將所有這些工作放在ViewModel中可能會更好:我給ViewModel一個列表,其中包含要在組合框中顯示的字符串,並且當前是枚舉的屬性將更改爲字符串。所有這些字符串將由本地化器生成。 –