WPFアプリケーションを作成していますが、複数のバインドパスを持つ値コンバーターが必要ですが、それは可能ですか?
これまでのところ、1つのパスで機能します。
Binding="{Binding Path=Price, Converter={StaticResource vPriceConvertor}}"
Price
とをコンバーターに渡して、discount
彼がを計算できるようにしendprice
ます。
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>
複数のソースをサポートしているため、実際に変換を行うには、IValueConverterの代わりにIMultiValueConverterを実装します。
値変換は...値変換を目的としています。それが彼らが価値変換者である理由です。
やりたいことを行うには、ビューモデルでプロパティを作成しEndPrice
、ビューモデルでその値を計算する必要があります。UI以外のロジックをUIに取り入れようとしているのはなぜですか?
パリス-
価格と割引を含むコレクションを(ビューモデルで)いつでも作成し、それをXAML(IValueConverter)に渡すことができます。
しかし、@ Dennisと他のすべての人が指摘していることを繰り返すと、コンバーターには計算ロジックがありますが、これはお勧めできません。