2009-12-21 2 views
0

Я использую Expresion Blend 3 и создал новый пользовательский элемент управления в моем проекте. Я хочу раскадровку, чтобы работать, если пользовательское свойство этого пользовательского элемента управления запускается как с тех, которые показаны здесь в списке ..Основной вопрос WPF: как добавить триггер настраиваемого свойства?

alt text http://i49.tinypic.com/24eakjt.png

я узнал, что вам нужно свойство зависимостей, но мое понимание есть ограниченное , Вот основной код я настраивал со свойством «IsAwesome» в качестве примера ..

Partial Public Class simpleControl 
    Public Sub New() 
     MyBase.New() 
     Me.InitializeComponent() 
    End Sub 

    Public Shared ReadOnly IsAwesomeProperty As DependencyProperty = _ 
     DependencyProperty.Register("IsAwesome", GetType(Boolean), GetType(simpleControl)) 

    Public Property IsAwesome() As Boolean 
     Get 
      Return DirectCast(Me.GetValue(IsAwesomeProperty), Boolean) 
     End Get 
     Set(ByVal value As Boolean) 
      Me.SetValue(IsAwesomeProperty, value) 
     End Set 
    End Property 
End Class 

Однако мое свойство не в этом списке. Что мне не хватает? Или мой подход совсем не так? Любая помощь или совет будут оценены!

Cheers

+0

Ваш подход является правильным. Мой VB в лучшем случае ржавый, но перевод этого эквивалентного C# работает так, как ожидалось для меня (я вижу свое свойство в раскрывающемся списке). Можете ли вы дать мне больше контекста. Какую версию Blend вы используете? Где вы пытаетесь добавить раскадровку? Внутри шаблона? Является ли это UserControl или настраиваемый элемент управления? –

+0

Я использую Blend 3, раскадровка находится внутри шаблона UserControl. Честно говоря, я думаю, что моя проблема в том, что я неправильно играю со стилями. Как вы попали в список с помощью настраиваемого элемента управления? – Jay

ответ

1

Я создал новый проект Wpf. Добавлен новый UserControl (UserControl1) с настраиваемым свойством зависимостей Foo.

Затем я открыл Blend и добавил экземпляр UserControl1 в Window1. Я нажал правой кнопкой мыши на UserControl1 и сказал EditTemplate | Редактирование копии.

Это создало копию моего шаблона управления пользователями в Window.Resources. Из этого нового шаблона я подошел к панели «Триггеры» и нажал кнопку, чтобы добавить новый триггер свойств.

Сразу же Blend по умолчанию выбрал мое свойство в разделе «Активировано когда».

alt text http://blog.BradCunningham.net/Images/ForumImages/CustomDPInBlend.png

Вы можете захватить мой маленький пример приложения здесь: http://blog.BradCunningham.net/SourceCode/ForumSamples/CustomDPInBlend.zip

+0

Ничего себе! Очень признателен! Наверное, я тогда редактировал шаблоны из неправильного места. Тем не менее, есть ли способ, которым я могу изменить элементы управления внутри usercontrol? например, сделать видимым текстовым блоком с надписью «Этот элемент управления пуст», если свойство .IsEmpty равно true. – Jay

+0

Конечно, на снимке экрана, который я разместил, я попал в ControlTemplate для UserControl1. Настройка Trigger I am активируется, когда Foo = null. Как вы можете видеть, Blend показывает мне (через красный контур), что Foo = нулевая запись триггера включена. Это означает, что любые свойства, которые я изменяю на своих визуальных элементах, будут заданы только при активации триггера (когда Foo = null). Если вы вернетесь к по умолчанию (т. Е. Деактивируете триггер Foo = null), вы заметите, что свойства, установленные в триггере Foo, отменены. –

+0

Но я все еще не могу редактировать элементы управления внутри UserControl через редактирование шаблона? http://i49.tinypic.com/10wo5q9.png - поскольку они недоступны в списке объектов. Я предполагаю, что это можно сделать только с помощью кода. Еще раз спасибо. – Jay

Смежные вопросы