0

我有一个名为 LOCATION_ID 的表列。我想显示位于 LOCATION 表中的 LOCATION_NAME 而不是 ID。

我正在尝试实现 IValueConverter 但不知道该怎么做。我正在使用带有实体框架的 WPF。

我如何将 ID 值传递给这个转换器?

我有一个方法名称 GetLocationNameByID()。我会在转换器的哪个位置调用此方法?以及如何将返回值绑定到数据网格 XAML?

4

2 回答 2

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 检测到 中的值发生变化时MyPropertyMyDataContextObject它会调用MyIValueConverter对象的Convert方法,将属性的值作为Value参数传递。该Convert方法的实现完成了它必须做的事情并返回要显示的字符串。

于 2013-09-06T18:08:18.567 回答
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>  
于 2013-09-06T17:54:32.547 回答