2015-05-13 2 views
1

Я хочу создать шаблон (ресурсный словарь) для своего приложения. где мой тип наследует тип кнопки, и затем я могу позвонить ему:WPF создать свой собственный тип

<my-custom-type inherit from button> 
</my-custom-type inherit from button> 

И, конечно же, в WPF.

Более конкретно, я хотел бы создать копии элемента управления на изображении ниже с помощью простого синтаксиса XAML, как указано выше.

button

+0

Будьте немного более ясны, вы можете создать пользовательские элементы управления (и даже наследовать от кнопки, хотя я сомневаюсь, что вы действительно хотите это сделать). Не могли бы вы уточнить, где вы боретесь? – BradleyDotNET

+0

Хорошо, я думаю, вы знаете, что вы можете создавать эти шаблоны для каждого виджета (типа) в wpf. В моем приложении я создал границу с текстовым полем. Но теперь я хочу создать тип с этими виджетами. Поэтому я могу импортировать его и использовать его так часто, как хочу. Надеюсь, это было хорошее объяснение ... Ну, я загружу картинку. – Sens4

+0

Я думаю, что я как бы понял. Дайте мне знать, поможет ли мой ответ! Также, пожалуйста, отредактируйте эту информацию комментария в свой пост, это поможет ее прояснить. Если вы разместите ссылку на изображение, я загружу для вас. – BradleyDotNET

ответ

4

Есть два подхода к этому, каждый со своими плюсами и минусами:

Шаблоны позволяют повторно использовать раздел XAML. Существует (почти всегда) отсутствие кода, и вы, конечно, не будете получать от Button. Например, если вы хотите иметь граничат текстовое поле повторяется в ItemsControl:

<DataTemplate x:Key="MyDataTemplate"> 
    <Border> 
     <TextBox/> 
    </Border> 
</DataTemplate> 

Или в классе кнопки вы используете ContentTemplate:

<Button ContentTemplate={StaticResource MyTemplate}> 
</Button> 

И вы будете использовать его в качестве XTemplate="{StaticResource MyDataTemplate}" в существующий который использовал шаблоны. Это обычно путь. Обратите внимание, что имя свойства не будет Template, но ItemTemplate, или ContentTemplate или что-то подобное.

Исключение, если вы хотите пользовательские поведения, в этом случае, когда вы используете UserControl. Это технически может унаследовать от Button, хотя вы, как правило, этого не сделали. Подклассификация базового элемента управления должна выполняться только в том случае, если вы уверены, что на самом деле хотите это сделать. После того, как ваш пользовательский элемент управления создается, синтаксис будет выглядеть подобно тому, что у вас есть в вашем вопросе:

<local:MyButton> 
</local:MyButton> 

Обратите внимание, что «местный» является выдуманным XMLNS. Пользовательский элемент управления будет состоять из любых элементов управления, которые вы хотели бы, и вы можете подвергать «атрибуты» используемому коду через свойства зависимостей.

+0

Ahh ... Кажется, я понял первый пример. Я проверю его: P brb – Sens4

+0

Шаблоны выглядят так, как надо. – kidshaw

+0

@kidshaw Обычно да, 'UserControl' очень часто используется неправильно в WPF. – BradleyDotNET