0

ここにTextBoxがあります

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

コンテンツは他のComboBoxに依存しています

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

Sample1またはが選択されている場合Sample3、TextBoxはにバインドする必要がありますMinStepDiff

が選択されている場合Sample2、TextBoxはその時点でバインドする必要がありMinToleranceます

どちらもオブジェクトのプロパティです。

どうすればいいですか?

4

1 に答える 1

1

を使用できます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>
于 2012-05-20T01:46:31.513 に答える