2012-10-02 2 views
1

Я делаю WPF-приложение, и мне нужен конвертер значений с более чем 1 связующим путем, возможно ли это?WPF Value Converter

Он работает с 1 пути до сих пор:

Binding="{Binding Path=Price, Converter={StaticResource vPriceConvertor}}"

Я хочу дать Price и discount к преобразователю, так что он может вычислить endprice.

+0

В дополнение к точке @Dennis, вы распространяете бизнес-логику в слой пользовательского интерфейса ... это антипаттерн ... – code4life

ответ

5

Преобразователи значения предназначены для преобразования значений. Вот почему они являются значениями преобразователями.

Чтобы сделать то, что вам нужно, вы должны сделать недвижимость EndPrice в виде модели, и рассчитать ее значение в поле зрения модели. Почему вы пытаетесь внедрить логику не-UI в интерфейс?

+0

Отличная точка. – code4life

+0

Я думал, что лучше вычислять endprice каждый раз, но добавление свойства в виде модели кажется лучшей идеей, thx. –

5

Посмотрите на класс MultiBinding. Например:

<TextBlock Name="textBlock" DataContext="{StaticResource myViewModel}"> 
    <TextBlock.Text> 
    <MultiBinding Converter="{StaticResource vPriceConvertor}" 
        ConverterParameter="myParameter"> 
     <Binding Path="Price"/> 
     <Binding Path="Discount"/> 
     <!-- Insert other paths here --> 
    </MultiBinding> 
    </TextBlock.Text> 
</TextBlock> 

Реализовать IMultiValueConverter вместо IValueConverter фактически сделать преобразование, так как он поддерживает множество источников.

+0

Это способ сделать это! – code4life

1

Парис -

Вы всегда можете создать коллекцию (в View Model), которая содержит цены и скидки, а затем передать его через XAML (через IValueConverter).

Но для повторного итерации @Dennis и всех остальных - тогда ваш конвертер будет иметь логику расчета, что не рекомендуется.

Смежные вопросы