2012-10-02 75 views
1

我在做一個WPF應用程序,我需要一個具有多於一個綁定路徑的值轉換器,這可能嗎?WPF值轉換器

它的工作原理與1路至今:

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

我想給Pricediscount到轉換器這樣他就可以計算出endprice

+0

除了@丹尼斯的觀點,您正在將業務邏輯擴展到用戶界面層...這是一個反模式... – code4life

回答

5

價值轉換器旨在...價值轉換。這就是爲什麼他們的價值轉換器

要做你想做的事,你應該在視圖模型中製作一個屬性EndPrice,並在視圖模型中計算它的值。你爲什麼試圖將非UI邏輯帶入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

帕雷斯 -

你總是可以創建一個集合,(在視圖模型),其中包含價格和折扣,然後通過你的XAML(可通過的IValueConverter)通過。

但重新迭代@Dennis和其他人指出 - 那麼你的轉換器將有計算邏輯 - 這是不推薦。