2009-12-21 3 views
0

Expresion Blend 3을 사용하고 프로젝트에 새 사용자 정의 컨트롤을 만들었습니다. 나는 기본 WPF 질문 : 사용자 지정 속성 트리거를 추가하는 방법?

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

난 당신이 종속성 속성을 필요로 배웠습니다 .. 해당 사용자 컨트롤의 사용자 정의 속성이 목록에 여기에 표시된 사람과 같은 트리거되는 경우 스토리 보드 실행하려는, 그러나 나의 이해는 제한이있다 . 여기
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 

그러나, 내 재산은 그 목록에 표시되지 않습니다 내가 예를 들어 재산 "IsAwesome"로 설정 한 기본 코드는 ...입니다. 내가 뭘 놓치고 있니? 아니면 내 접근 방식이 잘못 되었나요? 도움이나 조언을 보내 주시면 감사하겠습니다.

건배

+0

접근 방식이 올바른 것입니다. 내 VB는 고의적으로 녹슬지 만 이것을 C#으로 변환하면 예상대로 작동합니다 (드롭 다운에 내 속성이 표시됨). 더 많은 컨텍스트를 제공 할 수 있습니까? 어떤 버전의 블렌드를 사용하고 있습니까? 스토리 보드를 어디에 추가하려고합니까? 템플릿 안에? 이 UserControl 또는 사용자 지정 컨트롤 있습니까? –

+0

나는 블렌드 3을 사용하고 있습니다. 스토리 보드는 UserControl의 템플릿 안에 있습니다. 솔직히 말하면, 제 문제는 제가 스타일을 잘못 사용하고 있다는 것입니다. 사용자 정의 컨트롤을 사용하여 목록에 어떻게 접근 했습니까? – Jay

답변

1

새로운 Wpf 프로젝트를 만들었습니다. Foo라는 사용자 지정 종속성 속성이있는 새로운 UserControl (UserControl1)이 추가되었습니다.

그런 다음 Blend를 열고 UserControl1의 인스턴스를 Window1에 추가했습니다. 내가 오른쪽 UserControl1 클릭하고 EditTemplate 말했다 | 사본 편집.

이렇게하면 Window.Resources에 내 사용자 정의 컨트롤 템플릿의 복사본이 만들어졌습니다. 이 새 템플릿 내에서 트리거 패널까지 갔다가 버튼을 클릭하여 새 속성 트리거를 추가했습니다.

바로 가기 블렌드는 기본적으로 "활성화시기"섹션에서 내 속성을 선택합니다.

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

여기에서 내 작은 샘플 응용 프로그램을 잡을 수 있습니다 http://blog.BradCunningham.net/SourceCode/ForumSamples/CustomDPInBlend.zip

+0

와우! 매우 감사! 나는 틀린 장소에서 템플렛을 편집하고 있었다는 것을 나는 생각한다. 그러나, 내가 거기에서 usercontrol 안에 컨트롤을 변경할 수있는 방법이 있습니까? 예 : .IsEmpty 속성이 true 인 경우 "이 컨트롤은 비어 있습니다"라는 텍스트 블록을 표시합니다. – Jay

+0

물론, 스크린 샷에서 나는 UserControl1을위한 ControlTemplate 안에 있다고 게시했습니다. Foo = null 일 때 Trigger I am 설정이 활성화됩니다. Blend는 Foo = null 트리거 기록이 켜져 있음을 (빨간색 외곽선을 통해) 보여줍니다. 즉, 시각 요소에서 변경 한 속성은 trriger이 활성화 된 경우에만 설정됩니다 (Foo = null 인 경우). 기본값 (Foo = null 트리거 비활성화)으로 돌아 가면 Foo 트리거 내부에서 설정 한 속성이 취소되었음을 알 수 있습니다. –

+0

하지만 템플릿 편집을 통해 UserControl 내부의 컨트롤을 편집 할 수 없습니까? http://i49.tinypic.com/10wo5q9.png - Objects 목록에서 사용할 수 없기 때문에. 나는 그 때 코드에 의해 다만 행해질 수있다 짐작한다. 고마워, 또. – Jay