1

を実装するために、Extended WPF Toolkit を使用していますPropertyGrid

デフォルトの日付選択コントロールは WPFDatePickerではないようですが、間違っていなければカスタムコントロールです。

通常、DatePicker日付を選択するためにコントロールを使用します。PropertyGridコントロールにも使用できますか?これは、一貫した日付形式を提供するために必要でdd.MM.yyyyあり、このプロパティは日付であるため、時間も表示されるべきではありません。

これは Xceed Property Grid を使用して実行できますか?

[Category("General")]
[DisplayName("Date")]
[PropertyOrder(2)]
public DateTime? Date { get; set; }

日付ピッカー

4

2 に答える 2

2

Xceedはカスタマイズ性が高く、 ITypeEditorインターフェイスとEditor属性PropertyGridを使用してプロパティ エディターをカスタマイズできます。

まず、カスタム エディター コントロールを定義する必要があります。

public class DateTimePickerEditor : DateTimePicker, ITypeEditor
{
    public DateTimePickerEditor()
    {
        Format = DateTimeFormat.Custom;
        FormatString = "dd.MM.yyyy";

        TimePickerVisibility = System.Windows.Visibility.Collapsed;
        ShowButtonSpinner = false;
        AutoCloseCalendar = true;
    }

    public FrameworkElement ResolveEditor(PropertyItem propertyItem)
    {
        Binding binding = new Binding("Value");
        binding.Source = propertyItem;
        binding.Mode = propertyItem.IsReadOnly ? BindingMode.OneWay : BindingMode.TwoWay;

        BindingOperations.SetBinding(this, ValueProperty, binding);
        return this;
    }
}

コンストラクター内のすべてのものは、特定の動作を取得するために作成されます (つまり、時間制御なし、特定の日付形式など)。

DateTimePickerEditor次に、オブジェクト プロパティの既定のエディターとしてを設定する必要があります (サンプルでは "Date" と呼ばれます)。

[Category("General")]
[DisplayName("Date")]
[PropertyOrder(2)]
[Editor(typeof(DateTimePickerEditor), typeof(DateTimePicker))]
public Nullable<DateTime> Date

お役に立てば幸いです。

于 2016-09-09T16:08:02.667 に答える
0

「DataTemplates を使用したカスタム エディター」に示されているエディター テンプレートを使用して、XAML のみのソリューションを使用することもできます。

https://wpftoolkit.codeplex.com/wikipage?title=PropertyGrid&referringTitle=ホーム

このアプローチを使用すると、モデルクラスが外部ライブラリの属性で乱雑になることはありません。

DateTime 型の書式設定された入力は、次の方法で実現できます。

<xctk:PropertyGrid>
    <xctk:PropertyGrid.EditorDefinitions>    
        <xctk:EditorTemplateDefinition>
            <xctk:EditorTemplateDefinition.TargetProperties>
                <xctk:TargetPropertyType Type="{x:Type sys:DateTime}" />
            </xctk:EditorTemplateDefinition.TargetProperties>
            <xctk:EditorTemplateDefinition.EditingTemplate>
                <DataTemplate>
                    <xctk:DateTimePicker Value="{Binding Value}" Format="ShortDate" />
                </DataTemplate>
            </xctk:EditorTemplateDefinition.EditingTemplate>
       </xctk:EditorTemplateDefinition>
   </xctk:PropertyGrid.EditorDefitions>
</xctk:PropertyGrid>

名前空間 sys が定義されている場合xmlns:sys="clr-namespace:System;assembly=mscorlib"

于 2017-01-02T08:24:02.940 に答える