如何更改现有绑定的路径?

本文关键字:路径 绑定 何更改 | 更新日期: 2023-09-27 18:34:43

我这里有一个文本框

<TextBox ...>
    <TextBox.Text>
        <Binding Path="MinStepDiff" UpdateSourceTrigger="PropertyChanged">
            <Binding.ValidationRules>
                <local:ImpellerArgsRule IsCanBeZero ="false"/>
            </Binding.ValidationRules>
        </Binding>
    </TextBox.Text>
</TextBox>

它的内容依赖于其他组合框

<ComboBox ...>
    <ComboBoxItem Content="Sample1"/>
    <ComboBoxItem Content="Sample2"/>
    <ComboBoxItem Content="Sample3"/>
</ComboBox>

如果选择了Sample1Sample3,则应将文本框绑定到MinStepDiff

如果选择了Sample2,则应将文本框绑定到MinTolerance然后

它们都是对象的属性。

我该怎么做?

如何更改现有绑定的路径?

您可以使用

DataTrigger .为此,您必须创建一个样式并为您的ComboBox命名(此处为"cb"(。因为这更容易,我绑定SelectedIndex而不是SelectedItem.

<TextBox>
    <TextBox.Style>                
        <Style TargetType="TextBox">
            <Setter Property="Text">
                <Setter.Value>
                    <Binding Path="MinStepDiff" UpdateSourceTrigger="PropertyChanged">
                        <Binding.ValidationRules>
                            <local:ImpellerArgsRule IsCanBeZero="false" />
                        </Binding.ValidationRules>
                    </Binding>
                </Setter.Value>
            </Setter>
            <Style.Triggers>
                <DataTrigger Binding="{Binding SelectedIndex, ElementName=cb}" Value="1">
                    <Setter Property="Text">
                        <Setter.Value>
                            <Binding Path="MinTolerance" UpdateSourceTrigger="PropertyChanged" />
                        </Setter.Value>
                    </Setter>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </TextBox.Style>
</TextBox>