Elh*_*far 2 enums xaml radio-button
我有enum
这样的:
public enum DLTypeEnum
{
Others = 1, People = 2, Company = 4,
}
Run Code Online (Sandbox Code Playgroud)
我有这样一个属性ViewModel
:
private DLTypeEnum _DLType;
public DLTypeEnum DLType
{
get { return _DLType; }
set { SetProperty(ref _DLType, value); }
}
Run Code Online (Sandbox Code Playgroud)
这是我的xaml
:
<WrapPanel Grid.Row="3" Grid.Column="1">
<WrapPanel.Resources>
<Converter:EnumToBoolConverter x:Key="EnumToBooleanConverter" />
</WrapPanel.Resources>
<RadioButton GroupName="DLType" IsChecked="{Binding Path=DLType,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged, Converter={StaticResource EnumToBooleanConverter}, ConverterParameter={x:Static dlAccount:DLTypeEnum.Others}}"/>
<RadioButton GroupName="DLType" IsChecked="{Binding Path=DLType,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged, Converter={StaticResource EnumToBooleanConverter}, ConverterParameter={x:Static dlAccount:DLTypeEnum.People}}"/>
<RadioButton GroupName="DLType" IsChecked="{Binding Path=DLType,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged, Converter={StaticResource EnumToBooleanConverter}, ConverterParameter={x:Static dlAccount:DLTypeEnum.Company}}"/>
</WrapPanel>
Run Code Online (Sandbox Code Playgroud)
而这个转换器:
public class EnumToBoolConverter:IValueConverter
{
private int val;
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
int intParam = (int)parameter;
val = (int)value;
return ((intParam & val) != 0);
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)//bool to enum
{
val ^= (int)parameter;
return Enum.Parse(targetType, val.ToString());
}
}
Run Code Online (Sandbox Code Playgroud)
一旦RadioButton
选中,我不希望它被取消选中,除非它选择另一个RadioButton
(即RadioButton
必须一直选择一个).
试试这段代码:
<WrapPanel Grid.Row="3" Grid.Column="1">
<WrapPanel.Resources>
<Converter:EnumToBoolConverter x:Key="EnumToBooleanConverter" />
</WrapPanel.Resources>
<RadioButton GroupName="DLType" IsChecked="{Binding Path=DLType,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged, Converter={StaticResource EnumToBooleanConverter}, ConverterParameter={x:Static dlAccount:DLTypeEnum.Others}}" Unchecked="RadioButton_Unchecked"/>
<RadioButton GroupName="DLType" IsChecked="{Binding Path=DLType,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged, Converter={StaticResource EnumToBooleanConverter}, ConverterParameter={x:Static dlAccount:DLTypeEnum.People}}" Unchecked="RadioButton_Unchecked"/>
<RadioButton GroupName="DLType" IsChecked="{Binding Path=DLType,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged, Converter={StaticResource EnumToBooleanConverter}, ConverterParameter={x:Static dlAccount:DLTypeEnum.Company}}" Unchecked="RadioButton_Unchecked"/>
</WrapPanel>
Run Code Online (Sandbox Code Playgroud)
和代码背后:
private void RadioButton_Unchecked(object sender, RoutedEventArgs e)
{
if((_viewModel.DLss.CurrentItem as DL).DLType == 0)
((RadioButton)sender).IsChecked = true;
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
68 次 |
最近记录: |