如果你只有2个复选框,我会在我的视图模型中引入一个名为ManualTime的布尔属性。
public bool IsManualTimeUsed
{
// get;set with property-changed
}
在用户界面中,您有两个机会:
机会1:
<CheckBox Name="UseSystemTime" Margin="7" Content="Use System Time and Date settings (Time, Date, DST, Timezone)"
IsChecked="{Binding IsManualTimeUsed, Converter{converterNamespace:InverseBoolConverter}}"/>
<CheckBox Name="ManualTime" Margin="7" Content="Set settings Manually"
IsChecked="{Binding IsManualTimeUsed}"/>
其中InverseBoolConverter可以看起来像:
public class InverseBoolConverter : MarkupExtension, IValueConverter
{
private static InverseBoolConverter converter;
public InverseBoolConverter()
{
}
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value is bool)
return !((bool) value);
return value;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
public override object ProvideValue(IServiceProvider serviceProvider)
{
return converter ?? (converter = new InverseBoolConverter());
}
}
Opportunity 2
<CheckBox Name="UseSystemTime" Margin="7" Content="Use System Time and Date settings (Time, Date, DST, Timezone)"
IsChecked="{Binding ElementName=ManualTime, Path=IsChecked, Converter={converterNamespace:InverseBoolConverter}}"/>
<CheckBox Name="ManualTime" Margin="7" Content="Set settings Manually"
IsChecked="{Binding IsManualTimeUsed}"/>
使用与机会1中相同的转换器。
CheckBox
。当勾选时,使用系统时间;否则,用户需要手动设置。用户界面应该简单、易懂且直接,不一定要漂亮。 - LightBulb