다중 바인딩이있는 StringFormat을 사용하여 멀티 핀딩을위한 짧은 XAML 구문은 무엇입니까?
-
13-09-2019 - |
문제
단일 바인딩의 경우 다음을 사용합니다.
<TextBlock>
<TextBlock.Text>
<MultiBinding StringFormat="{}{0}">
<Binding Path=EmployeeName/>
</MultiBinding>
</TextBlock.Text>
</TextBlock>
또는 짧은 구문 :
<TextBlock
Text="{MultiBinding StringFormat=\{0\}, Bindings={Binding Path=EmployeeName}}"/>
이제 멀티 핀딩이있는 경우 :
<TextBlock>
<TextBlock.Text>
<MultiBinding StringFormat="{}{0}, {2}">
<Binding Path="EmployeeName"/>
<Binding Path="Age"/>
</MultiBinding>
</TextBlock.Text>
</TextBlock>
더 짧은 구문은 무엇입니까?
<TextBlock
Text="{MultiBinding StringFormat=\{0\}, Bindings={Binding ??????}"/>
해결책
MSDN에 따르면, 두 번째 예제 ( "단일 바인딩을 사용한 멀티 핀딩을 사용한 짧은 구문")는 작동하지 않아야합니다. .NET 3.5 또한 .NET 4.0:
메모:
멀티 핀딩 및 우선 순위 결합은 XAML Extension 구문을 지원하지 않습니다 (동일한 바인딩베이스 클래스를 공유하더라도 실제로 바인딩을위한 XAML 동작을 구현 함).
따라서 그것이 당신에게 효과가 있다면, 그것은 우연히, 그것은지지되는 행동이 아닙니다.
추신 : 당신은 multibinding을 하나의 제본. 다음으로 충분해야합니다.
<TextBlock>
<TextBlock.Text>
<Binding Path="EmployeeName" />
</TextBlock.Text>
</TextBlock>
또는
<TextBlock Text="{Binding Path=EmployeeName}"/>
또는 더 짧은
<TextBlock Text="{Binding EmployeeName}"/>
제휴하지 않습니다 StackOverflow