<RadioButton Content="1" GroupName="a" IsChecked="{Binding a, Converter={StaticResource ResourceKey=RadioButton}, ConverterParameter=1}" />
<RadioButton Content="2" GroupName="a" IsChecked="{Binding a, Converter={StaticResource ResourceKey=RadioButton}, ConverterParameter=2}" />
<RadioButton Content="3" GroupName="a" IsChecked="{Binding a, Converter={StaticResource ResourceKey=RadioButton}, ConverterParameter=3}" />
<RadioButton Content="1" GroupName="b" IsChecked="{Binding b, Converter={StaticResource ResourceKey=RadioButton}, ConverterParameter=1}" />
<RadioButton Content="2" GroupName="b" IsChecked="{Binding b, Converter={StaticResource ResourceKey=RadioButton}, ConverterParameter=2}" />
<RadioButton Content="3" GroupName="b" IsChecked="{Binding b, Converter={StaticResource ResourceKey=RadioButton}, ConverterParameter=3}" />
我有两组RB,每组有三个RB。每组都有相同的RB值。
2个问题:
如果我点击RB在其他组中的值,我怎样才能在组中禁用RB?是否可以在没有C#代码的情况下在XAML中开发它?
如何在XAML中执行默认情况下在每个组中单击RB? Binding使用IsChecked,我不能做IsChecked =“true”。现在我在ViewModel中进行,但我认为它可以在XAML中完成。
对不起,如果有错误,谢谢。
答案 0 :(得分:0)
我会回答第一个问题..
你可以在Xaml中做到这一点,它太复杂了,即使有可能它也不可读......
我知道Xaml.cs不是代码的好地方,但这是一个纯ui代码,所以我更喜欢在Xaml.cs中编写它,而不是在ViewModel中编写
关于第二个问题,MVVM方式是在ViewModel中设置它 See this,这不完全是您的问题,但我从那里理解您的答案
答案 1 :(得分:0)
您需要使用Converter来反转布尔值。这意味着C#,因为我认为xaml中没有布尔反转转换器。
[ValueConversion(typeof(bool), typeof(bool))]
public class InvertBooleanConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (targetType != typeof(bool)) throw new InvalidOperationException("Value must be boolean");
return !((bool)value);
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotSupportedException();
}
}
你可以在XAML中使用像这样定义这个转换器,
<Window.Resources>
<local:InvertBooleanConverter x:Key="rbc"></local:InvertBooleanConverter>
</Window.Resources>
在某些StackPanel或Grid中,您可以将InvertBooleanConverter用于RadioButton
<RadioButton x:Name="rb1a" Content="1" GroupName="a" IsChecked="True" IsEnabled="{Binding IsChecked, ElementName=rb1b, Converter={StaticResource rbc}}" />
<RadioButton x:Name="rb2a" Content="2" GroupName="a" IsChecked="False" IsEnabled="{Binding IsChecked, ElementName=rb2b, Converter={StaticResource rbc}}" />
<RadioButton x:Name="rb3a" Content="3" GroupName="a" IsChecked="False" IsEnabled="{Binding IsChecked, ElementName=rb3b, Converter={StaticResource rbc}}" />
<RadioButton x:Name="rb1b" Content="1" GroupName="b" IsChecked="False" IsEnabled="{Binding IsChecked, ElementName=rb1a, Converter={StaticResource rbc}}" />
<RadioButton x:Name="rb2b" Content="2" GroupName="b" IsChecked="True" IsEnabled="{Binding IsChecked, ElementName=rb2a, Converter={StaticResource rbc}}" />
<RadioButton x:Name="rb3b" Content="3" GroupName="b" IsChecked="False" IsEnabled="{Binding IsChecked, ElementName=rb3a, Converter={StaticResource rbc}}" />