我有一个名为 LOCATION_ID 的表列。我想显示位于 LOCATION 表中的 LOCATION_NAME 而不是 ID。
我正在尝试实现 IValueConverter 但不知道该怎么做。我正在使用带有实体框架的 WPF。
我如何将 ID 值传递给这个转换器?
我有一个方法名称 GetLocationNameByID()。我会在转换器的哪个位置调用此方法?以及如何将返回值绑定到数据网格 XAML?
我有一个名为 LOCATION_ID 的表列。我想显示位于 LOCATION 表中的 LOCATION_NAME 而不是 ID。
我正在尝试实现 IValueConverter 但不知道该怎么做。我正在使用带有实体框架的 WPF。
我如何将 ID 值传递给这个转换器?
我有一个方法名称 GetLocationNameByID()。我会在转换器的哪个位置调用此方法?以及如何将返回值绑定到数据网格 XAML?
实现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
方法的实现完成了它必须做的事情并返回要显示的字符串。
您可以使用多重绑定,让您的值转换器实现 IMultiValueConverter 接口。转换器采用一个对象数组,每个数组都可以绑定到您的 XAML。
<TextBox>
<TextBox.Text>
<MultiBinding Converter="{StaticResource MyConverter}">
<MultiBinding.Bindings>
<Binding Path="SomeProperty" />
<Binding RelativeSource="{RelativeSource Self}"/>
</MultiBinding.Bindings>
</MultiBinding>
</TextBox.Text>
</TextBox>