我有一个值转换器,我想绑定一个属性,但绑定永远不会发生,即我的值转换器中的依赖项属性始终为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一个列表,其中包含要在组合框中显示的字符串,并且当前是枚举的属性将更改为字符串。所有这些字符串将由本地化器生成。 –