也许是一个简单的问题,但...... 所以,我已经将一个文本框绑定到ViewModel中的属性:
<TextBox x:Name="ololo"
Text="{Binding VM.OloloText, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">
附近有一个TextBlock,由于我事先已经实现了一些触发逻辑,它可以改变它的Text属性值:
<Style TargetType="TextBlock">
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=typeGallery, Path=SelectedValue}"
Value="FirstType">
<Setter Property="Text" Value="AAA" />
</DataTrigger>
<DataTrigger Binding="{Binding ElementName=typeGallery, Path=SelectedValue}"
Value="Second Type">
<Setter Property="Text" Value="BBB" />
</DataTrigger>
...
因此,此TextBlock的值为AAA
或BBB
。所有这一切都像一个魅力。
问题是如何将ololo TextBox绑定到一个属性,如果TextBlock中有VM.OloloText
值,则为AAA
,如果TextBlock值为VM.ololoText2
,则为BBB
} ?
答案 0 :(得分:1)
您可以使用几个DataTrigger
来为您执行此操作:
<TextBox x:Name="ololo">
<TextBox.Style>
<Style TargetType="{x:Type TextBox}">
<Setter Property="Text" Value="{Binding VM.OloloText}" />
<Style.Triggers>
<DataTrigger Binding="{Binding Text, ElementName=YourTextBlock}"
Value="AAA">
<Setter Property="Text" Value="{Binding OneProperty}" />
</DataTrigger>
<DataTrigger Binding="{Binding Text, ElementName=YourTextBlock}"
Value="BBB">
<Setter Property="Text" Value="{Binding AnotherProperty}" />
</DataTrigger>
</Style.Triggers>
</Style>
</TextBox.Style>
</TextBox>
请注意Binding
属性的VM.OloloText
仅在TextBlock
不 AAA
或BBB
时才有效在它。