我有一个弹出窗口,其中包含 DatePicker 控件和关联的 TextBlocks,允许用户选择日期范围标准。我还有一个“使用所有日期”切换开关。如果已将其设置为“开”,我想禁用日期范围控件,或者至少让它们看起来被禁用。
我试过这样:
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;
}
}