2012-10-02 2 views
1

WPF 응용 프로그램을 만들고 있는데 둘 이상의 바인딩 경로가있는 값 변환기가 필요합니까?WPF 값 변환기

그것은 지금까지 한 경로와 함께 작동 : 그는 endprice을 계산할 수 있도록

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

내가 컨버터주는 Pricediscount 싶어.

+0

@Dennis의 요점은 비즈니스 로직을 UI 레이어에 전파하는 것입니다 ... 이것은 반 패턴입니다. – code4life

답변

5

값 변환기는 값 변환을위한 것입니다. 그것이 바로 변환기입니다.

원하는대로하려면 뷰 모델에 EndPrice 속성을 만들고 뷰 모델에서 해당 값을 계산해야합니다. 왜 UI에 비 UI 로직을 가져 오려고합니까?

+0

뛰어난 포인트. – code4life

+0

매번 endprice를 계산하는 것이 더 좋다고 생각했지만 뷰 모델에서 속성을 추가하는 것이 가장 좋은 생각 인 것 같습니다. –

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> 

는 실제로 변환을 수행하는 대신 IValueConverter의 IMultiValueConverter를 구현합니다.

+0

이것이 방법입니다! – code4life

1

Parys -

당신은 항상 (보기 모델에서) 컬렉션을 만들 수 가격 및 할인을 포함하고 (IValueConverter를 통해) 귀하의 XAML을 통해 전달합니다.

그러나 @Dennis와 다른 모든 사람들이 다시 지적하면 변환기에 계산 논리가 생기므로 권장하지 않습니다.