WPF 응용 프로그램을 만들고 있는데 둘 이상의 바인딩 경로가있는 값 변환기가 필요합니까?WPF 값 변환기
그것은 지금까지 한 경로와 함께 작동 : 그는 endprice
을 계산할 수 있도록
Binding="{Binding Path=Price, Converter={StaticResource vPriceConvertor}}"
내가 컨버터주는 Price
과 discount
싶어.
WPF 응용 프로그램을 만들고 있는데 둘 이상의 바인딩 경로가있는 값 변환기가 필요합니까?WPF 값 변환기
그것은 지금까지 한 경로와 함께 작동 : 그는 endprice
을 계산할 수 있도록
Binding="{Binding Path=Price, Converter={StaticResource vPriceConvertor}}"
내가 컨버터주는 Price
과 discount
싶어.
값 변환기는 값 변환을위한 것입니다. 그것이 바로 변환기입니다.
원하는대로하려면 뷰 모델에 EndPrice
속성을 만들고 뷰 모델에서 해당 값을 계산해야합니다. 왜 UI에 비 UI 로직을 가져 오려고합니까?
뛰어난 포인트. – code4life
매번 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를 구현합니다.
이것이 방법입니다! – code4life
Parys -
당신은 항상 (보기 모델에서) 컬렉션을 만들 수 가격 및 할인을 포함하고 (IValueConverter를 통해) 귀하의 XAML을 통해 전달합니다.
그러나 @Dennis와 다른 모든 사람들이 다시 지적하면 변환기에 계산 논리가 생기므로 권장하지 않습니다.
@Dennis의 요점은 비즈니스 로직을 UI 레이어에 전파하는 것입니다 ... 이것은 반 패턴입니다. – code4life