我看到很多关于如何将布尔值绑定到单选按钮的帖子.但我的情况是我需要将它绑定到单选按钮并从用户读取选择.
这是不应该选择的选项.
如果我将它绑定到布尔值,由于布尔值不为null,它显示在单选按钮中选择的默认值.
如果我使用可空布尔值,我在尝试使用转换器时仍然默认为false.
我不能在xaml中使用单向模式,因为我需要检查是否使用有界变量进行单选按钮选择.
关于如何实现这个蚂蚁指针?
您可以将可以为空的布尔值绑定到单选按钮,但是您需要通过转换器进行绑定.
首先声明你的变量:
private bool? answer;
public bool? Answer
{
get { return answer; }
set
{
answer = value;
if (PropertyChanged != null) PropertyChanged(this, new PropertyChangedEventArgs("Answer"));
}
}
Run Code Online (Sandbox Code Playgroud)
并初始化为null.
然后在XAML中:
<Window.Resources>
<local:BooleanConverter x:Key="BooleanConverter"/>
</Window.Resources>
<StackPanel Grid.Row="1">
<RadioButton Content="I Agree"
IsChecked="{Binding Answer,
Converter={StaticResource BooleanConverter},
ConverterParameter='true', Mode=TwoWay}" />
<RadioButton Content="I Disagree"
IsChecked="{Binding Answer,
Converter={StaticResource BooleanConverter},
ConverterParameter='false', Mode=TwoWay}" />
</StackPanel>
Run Code Online (Sandbox Code Playgroud)
最后你的转换器:
class BooleanConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
var test = (bool?)value;
var result = bool.Parse((string)parameter);
if (test == result)
{
return true;
}
return false;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
var result = bool.Parse((string)parameter);
return result;
}
}
Run Code Online (Sandbox Code Playgroud)
这Answer会将单选按钮绑定到并指出第一个仅在值为时检查true,第二个将在答案时被检查false.然后,Answer在让用户继续操作之前,您可以检查它是否为空.
| 归档时间: |
|
| 查看次数: |
7081 次 |
| 最近记录: |