【问题标题】:Change Binding depending on RadioButton根据 RadioButton 更改绑定
【发布时间】:2015-02-08 21:54:18
【问题描述】:

我有一个文本框,其绑定到具有三元组的 ObservableCollection,并希望根据两个单选按钮更改绑定:

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}"
  • 然后检查 FifoRadioButton:Text="{Binding Path=Item3 , Mode=OneWay}"

【问题讨论】:

    标签: c# wpf binding radio-button tuples


    【解决方案1】:

    您可以将 2 个Triggers 添加到您的DataTemplateTextBox

    <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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-05
      • 2015-10-14
      • 1970-01-01
      • 2014-05-05
      • 2016-11-09
      • 1970-01-01
      • 1970-01-01
      • 2016-11-20
      相关资源
      最近更新 更多