0

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;
    }
}
4

1 に答える 1

2

これを行う最善の方法は、単にIsEnabledコントロールにプロパティを設定することです。視覚的な状態を適切に更新します。ある程度の視覚的感覚があり、"より良い無効状態の外観" を設計したい場合は、コントロール テンプレートを変更し、無効状態の視覚状態を変更して別の色を使用できます。

于 2014-11-07T21:56:00.160 に答える