Compartilhar via


Classe DialogPropertyValueEditor

Contêiner para todas as caixa de diálogo caixa de edição de lógica para PropertyEntry objetos.

Namespace:  Microsoft.Windows.Design.PropertyEditing
Assembly:  Microsoft.Windows.Design (em Microsoft.Windows.Design.dll)

Sintaxe

Public Class DialogPropertyValueEditor _
    Inherits PropertyValueEditor

Dim instance As DialogPropertyValueEditor
public class DialogPropertyValueEditor : PropertyValueEditor
public ref class DialogPropertyValueEditor : public PropertyValueEditor
public class DialogPropertyValueEditor extends PropertyValueEditor

Comentários

Use o DialogPropertyValueEditor classe para mostrar uma linha interna editor pode ter um editor de caixa de diálogo associadas.

The DialogPropertyValueEditor classe pode conter tanto um DataTemplate para um editor de caixa de diálogo ou a lógica personalizada que é chamada quando a caixa de diálogo é invocada.

Use o EditModeSwitchButton no seu DataTemplate para chamar seu personalizado DialogPropertyValueEditor classe.

Você pode fornecer um DataTemplate que for exibido em uma caixa de diálogo host ou você pode substituir o ShowDialog método, que permite a reutilização das caixas de diálogo existente ou de sistema.

A lista a seguir mostra as regras para determinar se o DataTemplate ou ShowDialog método é usado.

  • Se o DialogEditorTemplate propriedade não é nulluma referência nula (Nothing no Visual Basic), que DataTemplate está hospedado em uma caixa de diálogo específica do host, que fornece o estilo de host. The ShowDialog não é chamado.

  • Se o DialogEditorTemplate propriedade é nulluma referência nula (Nothing no Visual Basic), o virtual ShowDialog método é chamado e você pode substituir esse método para mostrar qualquer caixa de diálogo.

Exemplos

O exemplo de código a seguir mostra como criar uma caixa de diálogo editor de propriedade de valor que exibe uma caixa de diálogo de arquivo em aberto quando um personalizado FileNamepropriedade é clicada na janela Propriedades.Para obter mais informações, consulte Como: Criar um Editor de valor caixa de diálogo Propriedades de caixa.

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"
                    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>

Hierarquia de herança

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

Acesso thread-safe

Quaisquer membros static (Shared no Visual Basic) públicos deste tipo são thread-safe. Não há garantia de que qualquer membro de instância seja thread-safe.

Consulte também

Referência

Membros DialogPropertyValueEditor

Namespace Microsoft.Windows.Design.PropertyEditing

EditModeSwitchButton

PropertyEntry

PropertyValue

PropertyValueEditorCommands

IInputElement

Outros recursos

Propriedade de edição de arquitetura

Extensibilidade do WPF Designer