WPF DatePicker IsEnabled属性不更改外观

Jon*_*han 6 wpf styles toolkit datepicker isenabled

我想我已经DatePicker在工具包中找到了一个问题,也许你们中的一些大师可以查看它.

问题是在设置IsEnabled属性时DatePicker.如果在XAML中设置,即使IsEnabled在运行时将其设置为true ,它也会保持灰色.如果它开始启用,反过来也是如此.

该按钮只是更改了IsEnabled日期选择器的属性,您将看到它启用后,样式仍为灰色.

<Window x:Class="WpfApplication3.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:tk="http://schemas.microsoft.com/wpf/2008/toolkit"
    Title="Window1" Height="300" Width="300">
    <StackPanel>
        <tk:DatePicker x:Name="txtDate" IsEnabled="False"></tk:DatePicker>
        <Button Height="25" Click="Button_Click"></Button>
    </StackPanel>
</Window>

private void Button_Click(object sender, RoutedEventArgs e)
{
    txtDate.IsEnabled = !txtDate.IsEnabled;
}
Run Code Online (Sandbox Code Playgroud)

小智 7

我通过在IsEnabledChanged处理程序中显式设置DatePicker的视觉样式来解决这个问题:

private void datePicker_IsEnabledChanged(object sender, DependencyPropertyChangedEventArgs e)
{
    DatePicker datePicker = sender as DatePicker;
    if (datePicker.IsEnabled)
        VisualStateManager.GoToState(datePicker, "Normal", true);
    else
        VisualStateManager.GoToState(datePicker, "Disabled", true);
}
Run Code Online (Sandbox Code Playgroud)


Kis*_*mar -1

这个问题已在新的 WPFToolkit 中得到解决

  • 这是 2010 年 2 月的最新工具包中的内容 (2认同)