我有一个文本框,它绑定(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
更改 TextBox
的 Text="{Binding Path=Item2 , Mode=OneWay}"
>?
- 然后检查 PatoRadioButton:
Text="{Binding Path=Item2 , Mode=OneWay}"
- 然后选中 FifoRadioButton:
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
属性更改时,触发器将设置 TextBlock
的 Binding
。
关于c# - 根据 RadioButton 更改绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27405500/