根据单选按钮更改绑定

本文关键字:绑定 单选按钮 | 更新日期: 2023-09-27 18:33:48

我有一个文本框,其中包含与具有三元组的可观察集合的绑定,并希望根据两个单选按钮更改绑定:

XAML:

<ItemsControl ItemsSource="{Binding DataInformation, Mode=OneWay}">
    <ItemsControl.ItemTemplate>
        <DataTemplate>
                <TextBox x:Name="xTextbox" Grid.Row="0"
                        IsReadOnly="True"
                        Text="{Binding Path=Item2 , Mode=OneWay}" />
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl  >
<RadioButton Grid.Row="1"
        x:Name="PatoRadioButton" 
        Width="150"
        Content="Type Pato"
        Checked="PatoRadioButtonChecked" />
<RadioButton Grid.Row="2"
        x:Name="FifoRadioButton" 
        Width="150"
        Content="Type Fifo"
        Checked="FifoRadioButtonChecked" />

视图模型:

private ObservableCollection<Tuple<int, string, string>> dataInformation;
public ObservableCollection<Tuple<int, string, string>> DataInformation
{
    get
    {
        return DataInformation;
    }
    set
    {
        dataInformation = value;
        NotifyPropertyChanged("DataInformation");
    }
}

问题:

如何根据已检查RadioButton更改TextBoxText="{Binding Path=Item2 , Mode=OneWay}"

  • 然后选中PatoRadioButton:Text="{Binding Path=Item2 , Mode=OneWay}"
  • 然后检查Fifo单选按钮:Text="{Binding Path=Item3 , Mode=OneWay}"

根据单选按钮更改绑定

您可以在DataTemplate TextBox中添加 2 个Triggers

<DataTemplate>
    <TextBox x:Name="xTextbox" Grid.Row="0" IsReadOnly="True">
        <TextBox.Style>
            <Style TargetType="TextBox">
                <Style.Triggers>
                    <DataTrigger Binding="{Binding IsChecked, 
                                 ElementName=PatoRadioButton}" Value="True">
                        <DataTrigger.Setters>
                            <Setter Property="Text" Value="{Binding Path=Item2, 
                                    Mode=OneWay" />
                        </DataTrigger.Setters>
                    </DataTrigger>
                    <DataTrigger Binding="{Binding IsChecked, 
                                 ElementName=FifoRadioButton}" Value="True">
                        <DataTrigger.Setters>
                            <Setter Property="Text" Value="{Binding Path=Item3, 
                                    Mode=OneWay}" />
                        </DataTrigger.Setters>
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </TextBox.Style>
    </TextBox>
</DataTemplate>

触发器将在更改IsChecked属性时设置TextBlockBinding