我有标签在RadioButton First
或Second
IsChecked=true
时可见,在Third
或Fourth
IsChecked=false
时折叠。
是否只有一种方法可以将按钮的名称传递给转换器,并且转换器决定是折叠还是可见?
<Grid>
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<StackPanel Orientation="Vertical">
<RadioButton Content="Visible" x:Name="First"></RadioButton>
<RadioButton Content="Visible" x:Name="Second"></RadioButton>
<RadioButton Content="Collapsed" x:Name="Third"/>
<RadioButton Content="Collapsed" x:Name="Fourth"></RadioButton>
</StackPanel>
<Label Content="Test" Grid.Row="1"></Label>
</Grid>
答案 0 :(得分:4)
您可以实施IMultiValueConverter
并使用它将Visibility
绑定到多个值。
您可以找到示例here
答案 1 :(得分:0)
我建议将MVVM模式与https://en.wikipedia.org/wiki/List_of_file_signatures这样的框架一起使用。然后在View Model中,您可以拥有Label绑定到的LabelVisiblity属性。
如果MVVM模式不是一个选项,您可以为每个CheckBox的Checked事件添加事件处理程序。然后在那里设置Visility。
public MainWindow()
{
InitializeComponent();
textBlock.Visibility = Visibility.Collapsed;
option1.Checked += Option_Checked;
option2.Checked += Option_Checked;
option3.Checked += Option_Checked;
option4.Checked += Option_Checked;
}
private void Option_Checked(object sender, RoutedEventArgs e)
{
var option = (sender as RadioButton);
if (option.Name == "option1" || option.Name == "option2")
textBlock.Visibility = Visibility.Collapsed;
else
textBlock.Visibility = Visibility.Visible;
}