次の方法で共有


DialogPropertyValueEditor クラス

PropertyEntry オブジェクトのすべてのダイアログ ボックス編集ロジックのコンテナーです。

継承階層

System.Object
  Microsoft.Windows.Design.PropertyEditing.PropertyValueEditor
    Microsoft.Windows.Design.PropertyEditing.DialogPropertyValueEditor

名前空間:  Microsoft.Windows.Design.PropertyEditing
アセンブリ:  Microsoft.Windows.Design.Interaction (Microsoft.Windows.Design.Interaction.dll 内)

構文

'宣言
Public Class DialogPropertyValueEditor _
    Inherits PropertyValueEditor
public class DialogPropertyValueEditor : PropertyValueEditor
public ref class DialogPropertyValueEditor : public PropertyValueEditor
type DialogPropertyValueEditor =  
    class
        inherit PropertyValueEditor
    end
public class DialogPropertyValueEditor extends PropertyValueEditor

DialogPropertyValueEditor 型で公開されるメンバーは以下のとおりです。

コンストラクター

  名前 説明
パブリック メソッド DialogPropertyValueEditor() DialogPropertyValueEditor クラスの新しいインスタンスを初期化します。
パブリック メソッド DialogPropertyValueEditor(DataTemplate, DataTemplate) DialogPropertyValueEditor クラスの新しいインスタンスを初期化します。

このページのトップへ

プロパティ

  名前 説明
パブリック プロパティ DialogEditorTemplate ホスト固有のダイアログ ボックスによってホストされ、その DataContextPropertyValue に設定されている DataTemplate を取得または設定します。
パブリック プロパティ InlineEditorTemplate インライン エディターに使用される DataTemplate を取得または設定します。 (PropertyValueEditor から継承されます。)

このページのトップへ

メソッド

  名前 説明
パブリック メソッド Equals 指定した Object が、現在の Object と等しいかどうかを判断します。 (Object から継承されます。)
プロテクト メソッド Finalize オブジェクトがガベージ コレクションにより収集される前に、そのオブジェクトがリソースを解放し、その他のクリーンアップ操作を実行できるようにします。 (Object から継承されます。)
パブリック メソッド GetHashCode 特定の型のハッシュ関数として機能します。 (Object から継承されます。)
パブリック メソッド GetType 現在のインスタンスの Type を取得します。 (Object から継承されます。)
プロテクト メソッド MemberwiseClone 現在の Object の簡易コピーを作成します。 (Object から継承されます。)
パブリック メソッド ShowDialog DialogEditorTemplate が nullnull 参照 (Visual Basic では Nothing) で、ダイアログ ボックスがユーザーによって起動されているときに呼び出されます。
パブリック メソッド ToString 現在のオブジェクトを表す文字列を返します。 (Object から継承されます。)

このページのトップへ

解説

DialogPropertyValueEditor クラスを使用して、インライン エディターを表示します。これに 1 つのダイアログ ボックス エディターを関連付けることができます。

DialogPropertyValueEditor クラスは、ダイアログ ボックス エディター用の DataTemplate、またはダイアログ ボックスが起動されたときに呼び出されるカスタム ロジックを保持できます。

カスタム DialogPropertyValueEditor クラスを呼び出すには、DataTemplate 内で EditModeSwitchButton を使用します。

ホスト ダイアログ ボックスに表示される DataTemplate を提供するか、または既存のダイアログ ボックスかシステム ダイアログ ボックスを再利用できるようにする ShowDialog メソッドをオーバーライドできます。

DataTemplateShowDialog メソッドのどちらが使用されているかを判断するための規則を次に示します。

  • DialogEditorTemplate プロパティが nullnull 参照 (Visual Basic では Nothing) ではない場合、その DataTemplate は、ホストのスタイルを提供するホスト固有のダイアログ ボックスでホストされています。 ShowDialog は呼び出されません。

  • DialogEditorTemplate プロパティが nullnull 参照 (Visual Basic では Nothing) の場合、ShowDialog 仮想メソッドが呼び出され、このメソッドをオーバーライドして、任意のダイアログ ボックスを表示できます。

次のコード例は、[プロパティ] ウィンドウでカスタム FileName プロパティがクリックされたときに [ファイルを開く] ダイアログを表示する、ダイアログ プロパティ値エディターを作成する方法を示しています。 詳細については、「方法 : ダイアログ ボックス プロパティ値エディターを作成する」を参照してください。

using System;
using System.ComponentModel;
using System.Windows;
using Microsoft.Windows.Design.Metadata;
using Microsoft.Windows.Design.PropertyEditing;
using Microsoft.Win32;

namespace CustomControlLibrary.Design
{
    public class FileBrowserDialogPropertyValueEditor : DialogPropertyValueEditor
    {
        private EditorResources res = new EditorResources();

        public FileBrowserDialogPropertyValueEditor()
        {
            this.InlineEditorTemplate = res["FileBrowserInlineEditorTemplate"] as DataTemplate;
        }

        public override void ShowDialog(
            PropertyValue propertyValue,
            IInputElement commandSource)
        {
            OpenFileDialog ofd = new OpenFileDialog();
            ofd.Multiselect = false;

            if (ofd.ShowDialog() == true)
            {
                propertyValue.StringValue = ofd.FileName;
            }
        }
    }
}
<ResourceDictionary xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:PropertyEditing="clr-namespace:Microsoft.Windows.Design.PropertyEditing;assembly=Microsoft.Windows.Design.Interaction"
                    xmlns:Local="clr-namespace:CustomControlLibrary.Design"
                    x:Class="CustomControlLibrary.Design.EditorResources">

    <DataTemplate x:Key="FileBrowserInlineEditorTemplate">
        <Grid>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="1*"/>
                <ColumnDefinition Width="Auto"/>
            </Grid.ColumnDefinitions>
            <TextBox Grid.Column="0" Text="{Binding StringValue}"/>
            <PropertyEditing:EditModeSwitchButton Grid.Column="1"/>
        </Grid>
    </DataTemplate>

</ResourceDictionary>

スレッド セーフ

この型のすべてのパブリック static (Visual Basic では Shared) メンバーは、スレッド セーフです。 インスタンス メンバーの場合は、スレッド セーフであるとは限りません。

参照

参照

Microsoft.Windows.Design.PropertyEditing 名前空間

EditModeSwitchButton

PropertyEntry

PropertyValue

PropertyValueEditorCommands

IInputElement

その他の技術情報

プロパティ編集アーキテクチャ

WPF デザイナーの機能拡張