我有一个包含DatePicker控件和相关TextBlocks的弹出按钮,允许用户选择日期范围标准。我还有一个“使用所有日期”ToggleSwitch。如果已将其设置为“开”,我想禁用日期范围控件,或者至少为它们提供禁用的外观。
我试过这种方式:
private void tglswtchAllDates_Toggled(object sender, RoutedEventArgs args)
{
Color enabledColor = Colors.Black;
Color disabledColor = Colors.Gray;
txtblckDateFrom.Foreground = enabledColor;
txtblckDateTo.Foreground = enabledColor;
txtblckInclusive.Foreground = enabledColor;
bool allDates = tglswtchAllDates.IsOn;
datePickerFrom.Enabled = !allDates;
datePickerTo.Enabled = !allDates;
if (allDates)
{
txtblckDateFrom.Foreground = disabledColor;
txtblckDateTo.Foreground = disabledColor;
txtblckInclusive.Foreground = disabledColor;
}
}
...但我得到了各种编译错误,例如“无法将类型'Windows.UI.Color'转换为'Windows.UI.Xaml.Media.Brush' “”和“无法将类型'Windows.UI.Color'隐式转换为'Windows.UI.Xaml.Media.Brush'”和“' Windows.UI.Xaml.Controls.DatePicker '不包含'Enabled'的定义,并且没有扩展方法'Enabled'接受类型'Windows.UI.Xaml.Controls.DatePicker'的第一个参数可以找到(你是否缺少using指令或汇编引用?) “
那么,实现这一目标的尝试和真实 - 或至少在理论上是合理的 - 是什么?
在菲利普的帮助下,我:
private void tglswtchAllDates_Toggled(object sender, RoutedEventArgs args)
{
bool allDates = tglswtchAllDates.IsOn;
datePickerFrom.IsEnabled = !allDates;
datePickerTo.IsEnabled = !allDates;
if (allDates)
{
txtblckDateFrom.Opacity = 0.5;
txtblckDateTo.Opacity = 0.5;
txtblckInclusive.Opacity = 0.5;
}
else
{
txtblckDateFrom.Opacity = 1.0;
txtblckDateTo.Opacity = 1.0;
txtblckInclusive.Opacity = 1.0;
}
}
答案 0 :(得分:2)
最好的方法是在控件上设置IsEnabled
属性。它将适当地更新视觉状态。如果你有一些良好的视觉感受,并想尝试设计"更好的残疾状态外观" - 您可以修改控件模板并更改禁用状态的可视状态以使用不同的颜色。