实现IValueConverter以从ID获取Name

时间:2013-09-06 17:31:42

标签: c# wpf entity-framework

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

我正在尝试实现IValueConverter,但无法弄清楚如何做到这一点。我正在使用WPF和实体框架。

如何将ID值传递给此转换器?

我有一个方法名称GetLocationNameByID()。转换器中的哪个位置我会调用此方法?我如何将返回值绑定到datagrid XAML?

2 个答案:

答案 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检测到MyPropertyMyDataContextObject的值发生更改时,它会调用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>