6

DatePickerツールキットで に問題があることを発見したと思います。

問題は、のIsEnabledプロパティを設定するときですDatePickerIsEnabledXAML で設定すると、実行時に 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;
}
4

5 に答える 5

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);
}
于 2011-03-14T13:56:13.547 に答える
4

良い知らせが欲しいですか、それとも悪い知らせが欲しいですか?

幸いなことに、この問題は WPFToolkit の 2010 年 2 月のリリースで修正されたと Microsoft は述べています。そしてそれは持っています。

悪いニュースは、DatePicker の IsEnabled 値を "True" に設定すると DatePicker有効になるため、 [カレンダー] ボタンをクリックして日付を選択できるようになりますが、無効に見えることです。

"バグ" ?「バグ」という言葉を言いましたか?

もちろん違います。

ただし、適用することでこの問題を回避でき<Style>ます。

以下は、デモ用の簡単な xaml コードです。

2 つの行が表示され、それぞれに CheckBox と DatePicker が含まれています。行の CheckBox をクリックすると、その行の DatePicker が有効になります。

これは、スタイルのない DatePicker (最初の行) とスタイルのある DatePicker (2 行目) の違いを示しています。

代替テキスト

両方の DatePicker正しく有効化/無効化されますが、最初の行のものはそうであるようには見えません。2 行目の DatePicker は、Style無効になっているときにユーザーを表示するために a を使用します。

DatePickerこのコードが、コントロールとそのDatePickerTextBox一部の両方の Background を設定する方法に注目してください。

<Window x:Class="WPFDatePickerTest.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:wpf="clr-namespace:Microsoft.Windows.Controls;assembly=WPFToolkit" 
    xmlns:primitives="clr-namespace:Microsoft.Windows.Controls.Primitives;assembly=WPFToolkit"
    Title="Window1" Height="317" Width="461">
<Window.Resources>
    <Style TargetType="{x:Type primitives:DatePickerTextBox}">
        <Style.Triggers>
            <Trigger Property="IsEnabled" Value="False">
                <Setter Property="Background" Value="Transparent"/>
            </Trigger>
        </Style.Triggers>
    </Style>
    <Style x:Key="DatePickerStyle1" TargetType="{x:Type wpf:DatePicker}">
        <Style.Triggers>
            <Trigger Property="IsEnabled" Value="False">
                <Setter Property="Background" Value="{x:Static SystemColors.InactiveBorderBrush}"/>
            </Trigger>
        </Style.Triggers>
    </Style>
</Window.Resources>
<Grid>
    <StackPanel>
        <WrapPanel>
            <CheckBox Height="16" Name="cbDateOfJoining" Width="120">Date of joining</CheckBox>
            <wpf:DatePicker Height="25" 
                            Name="datePicker1" 
                            Width="140" 
                            IsEnabled="{Binding IsChecked, ElementName=cbDateOfJoining}" />
        </WrapPanel>
        <WrapPanel>
            <CheckBox Height="16" Name="cbDateOfLeaving" Width="120">Date of leaving</CheckBox>
            <wpf:DatePicker Height="25" 
                            Name="datePicker2" 
                            Width="140" 
                            IsEnabled="{Binding IsChecked, ElementName=cbDateOfLeaving}"
                            Style="{DynamicResource DatePickerStyle1}" />
        </WrapPanel>
    </StackPanel>
</Grid>
</Window>

お役に立てば幸いです!

そして、次の WPFtoolkit リリースで適切に修正されることを願っています。2009 年以来、ユーザーはこの問題について不満を漏らしてきました...

于 2010-09-02T08:46:04.967 に答える
0

誰かがこれに対する答えを得たことがありますか?2009 年 2 月のリリースでも同じ問題が発生しています。

これを試して。
1/ タブ コントロールを使用して、最初のタブに日付ピッカーを配置し、2 番目のタブに日付ピッカーを配置します。2/ ボタンを追加し、クリック イベントで、両方の日付ピッカー コントロールの IsEnabled プロパティを逆の値に設定します (つまり、有効になっている場合は無効にし、その逆も同様です)。

最初のタブでは、日付ピッカーは問題ありません。2 つ目は、無効になっているように見えますが、カレンダーを開いて日付を変更することはできます。

于 2010-04-21T10:47:59.020 に答える
-1

この問題は新しい WPFToolkit で解決されました

于 2010-04-14T07:53:48.150 に答える