2013-09-06 3 views
0

У меня есть столбец таблицы LOCATION_ID. Я хочу показать LOCATION_NAME, который находится в таблице LOCATION вместо ID.Реализация IValueConverter для получения имени от ID

Я пытаюсь реализовать IValueConverter, но не могу понять, как это сделать. Я использую WPF с инфраструктурой сущностей.

Как передать значение ID этому конвертеру?

У меня есть имя метода GetLocationNameByID(). Где в конвертере я бы назвал этот метод? И как бы связать возвращаемое значение с datagrid XAML?

+0

Если вы используете EF, почему бы вам не присоединиться к вашей таблице «Location» и не отменить «location_name»? Тогда вы сможете привязываться к 'Entity.Location.LocationName' или что-то в этом роде. – SlightlyCuban

+0

Для этого мне нужно использовать WCF? Я не использую WCF – kr13

+0

Только если вам нужно отменить «Местоположение» через веб-службу (я не думаю, что вы это делаете). Если это все в вашей БД, EF - это все, что вам нужно. – SlightlyCuban

ответ

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, он вызывает Convert метод в MyIValueConverter объекта, передавая значение свойства как Value параметр. Ваша реализация метода Convert делает то, что он должен делать & возвращает строку, которая будет отображаться.

+0

Это, наконец, помогло мне! Благодаря! – kr13

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> 
Смежные вопросы