WPF 绑定 - 选中 X 时绑定到 A,否则绑定到 B
本文关键字:绑定 选中 WPF | 更新日期: 2023-09-27 17:56:05
>基本上我有一个显示麦克风增益的文本块。
<TextBlock FontFamily="Calibri Light" FontSize="20" Foreground="#FFF65B60" FontWeight="Bold" Height="35"><Run Text="{Binding AudioRecorder.Gain, StringFormat={}Microphone Gain: {0:#} %}"/></TextBlock>
如您所见,这绑定到"AudioRecorder.Gain",但是如果未选中此复选框,我只想绑定到该值。
<CheckBox IsChecked="{Binding Recognizer.AutoGainControl}"
如果选中,我想绑定到
"识别器.增益"
这样的事情是可能的,还是我必须将两个增益变量合并在一起?
我不确定你是否成功了,但对于可能搜索同样事物的其他人来说,应该保留一些例子:
我已经收集了一些信息并创建了一个版本:
<Window x:Class="ComboItems.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:windows="clr-namespace:System.Windows;assembly=PresentationCore"
xmlns:system="clr-namespace:System;assembly=mscorlib"
Title="MainWindow" Width="525">
<Window.Resources>
<x:Array x:Key="data1" Type="{x:Type system:String}">
<system:String>Item1</system:String>
<system:String>Item2</system:String>
<system:String>Item3</system:String>
</x:Array>
<ObjectDataProvider x:Key="visibilityValues"
ObjectType="{x:Type system:Enum}"
MethodName="GetValues">
<ObjectDataProvider.MethodParameters>
<x:Type TypeName="windows:Visibility" />
</ObjectDataProvider.MethodParameters>
</ObjectDataProvider>
</Window.Resources>
<Grid>
<StackPanel>
<RadioButton Content="RadioButton1" Name="Radio1" GroupName="radio" />
<RadioButton Content="RadioButton2" Name="Radio2" GroupName="radio" />
<ListBox Name="listbox">
<ListBox.Style>
<Style TargetType="ListBox">
<Setter Property="ItemsSource">
<Setter.Value>
<Binding Source="{StaticResource data1}" />
</Setter.Value>
</Setter>
<Style.Triggers>
<DataTrigger Binding="{Binding Path=IsChecked, ElementName=Radio1}" Value="True" >
<Setter Property="ItemsSource">
<Setter.Value>
<Binding Source="{StaticResource data1}" />
</Setter.Value>
</Setter>
</DataTrigger>
<DataTrigger Binding="{Binding Path=IsChecked, ElementName=Radio2}" Value="True" >
<Setter Property="ItemsSource">
<Setter.Value>
<Binding Source="{StaticResource visibilityValues}" />
</Setter.Value>
</Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</ListBox.Style>
</ListBox>
</StackPanel>
</Grid>
</Window>
DataTrigger
将在这里完成这项工作,并根据两个RadioButton
的IsChecked
属性,它将更改ListBox
的来源。
此外,我在System.Enum
类型的 GetValues
方法的帮助下使用了枚举的绑定,该方法接受 Type
参数,以便它知道应返回哪个枚举的值。
上面的示例应该无需任何修改即可工作。