c# - 根据 RadioButton 更改绑定(bind)

标签 c# wpf binding radio-button tuples

我有一个文本框,它绑定(bind)到一个带有三元组的 ObservableCollection,我想根据两个单选按钮更改绑定(bind):

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" />

View 模型:

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}"

最佳答案

您可以向 DataTemplateTextBox 添加 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

关于c# - 根据 RadioButton 更改绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27405500/

相关文章:

C# 泛型和转换问题

c# - WPF - 两个不同 ViewModel 上的绑定(bind)和命令

wpf - 源更改时组合框 SelectedItem 不更新

c# - 无法使用 Ole Db 提供程序通过 C# 找到 postgres 数据库

c# - NinjectDependencyResolver 绑定(bind) ModelValidatorProvider 失败

c# - 在运行时添加属性

wpf - 我怎样才能得到 x :Name of an object from code?

c# - 如何使用 LINQ 比较两个 IEnumerable 集合

wpf - 在 WPF 全屏应用程序中禁止虚拟触摸屏 Windows 键盘

c# - 将 BindingNavigator 与以编程方式创建的 Datagridview 连接起来