我有一个名为LOCATION_ID的表列。我想显示位于LOCATION表中的LOCATION_NAME而不是ID。
我正在尝试实现IValueConverter,但无法弄清楚如何做到这一点。我正在使用WPF和实体框架。
如何将ID值传递给此转换器?
我有一个方法名称GetLocationNameByID()。转换器中的哪个位置我会调用此方法?我如何将返回值绑定到datagrid XAML?
答案 0 :(得分:3)
实现IValueConverer
接口非常简单。在XAML中,你会有这样的东西:
<Window x:Class="CarSystem.CustomControls.AlarmDisplayer"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:MyNameSpace"
DataContext="{Binding Path=MyDataContextObject, RelativeSource={RelativeSource Self}">
<Window.Resources>
<local:MyIValueConverter x:Key="Converter" />
</Window.Resoures>
<TextBox Text="{Binding Converter={StaticResource Converter} Path=MyProperty}" />
</Window>
当WPF检测到MyProperty
中MyDataContextObject
的值发生更改时,它会调用MyIValueConverter
对象的Convert
方法,并将该属性的值作为Value
参数。您对Convert
方法的实施做了它必须做的事情&amp;返回要显示的字符串。
答案 1 :(得分:0)
您可以使用多重绑定,让您的值转换器实现IMultiValueConverter接口。转换器采用一个对象数组,每个对象数组都可以绑定到您的XAML。
<TextBox>
<TextBox.Text>
<MultiBinding Converter="{StaticResource MyConverter}">
<MultiBinding.Bindings>
<Binding Path="SomeProperty" />
<Binding RelativeSource="{RelativeSource Self}"/>
</MultiBinding.Bindings>
</MultiBinding>
</TextBox.Text>
</TextBox>