WPF将一个TextBox绑定到两个属性

时间:2015-06-04 16:10:14

标签: c# wpf xaml

也许是一个简单的问题,但...... 所以,我已经将一个文本框绑定到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的值为AAABBB。所有这一切都像一个魅力。 问题是如何将ololo TextBox绑定到一个属性,如果TextBlock中有VM.OloloText值,则为AAA,如果TextBlock值为VM.ololoText2,则为BBB} ?

1 个答案:

答案 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 AAABBB时才有效在它。