2010-06-29 3 views
3

그래서 나는이처럼 보이는 클래스가 :WPF는 : 사용자 정의 트리거 속성으로 작업 할 연결된 속성을 가져올 수 없습니다

internal class MyClass 
{ 
    public static readonly DependencyProperty IsSomethingProperty = 
      DependencyProperty.RegisterAttached(
       "IsSomething", // property name 
       typeof(bool), // property type 
       typeof(MyClass), // owner type 
       new FrameworkPropertyMetadata(false) 
       ); 

    public static void SetIsSomething(DependencyObject obj, bool value) 
    { 
     obj.SetValue(IsSomethingProperty, value); 
    } 

    [AttachedPropertyBrowsableForType(typeof(TreeViewItem))]   
    public static bool GetIsSomething(DependencyObject obj) 
    { 
     return (bool)obj.GetValue(IsSomethingProperty); 
    } 
} 
난에서 트리거 속성으로이 연결된 속성을 사용할 수 있도록하고 싶습니다

컨트롤 템플릿, 그래서 같은 :

<ControlTemplate TargetType="TreeViewItem"> 
    <!-- stuff here omitted for brevity --> 
    <Trigger Property="my:MyClass.IsSomething" Value="True"> 
     <!-- setters for when IsSomething is True --> 
    </Trigger> 
</ControlTemplate> 

여기

(위의 컨트롤 템플릿이하여 MyAssembly가 MyClass에은 포함하는 XAML 파일에 들어있는 적절한 xmlns:my="clr-namespace:MyAssembly" 가정) 내 문제 : 내가 이것을 할 때, 그것은 잘 컴파일됩니다. 그러나 디자이너에서이 컨트롤 템플릿을 보려고하면 Cannot find the 'IsSomething' template property on type 'System.Windows.Controls.TreeViewItem'.이 표시되고 디자이너가로드되지 않습니다.

소유자 유형으로 MyClassTreeViewItem으로 덮어 쓰기를 시도했지만 해결되지 않았습니다. 나는 GetIsSomethingAttachedPropertyBrowsableForType 속성이 있거나없는 경우에도 시도해 보았습니다. 문제가 무엇인지 누구라도 알 수 있습니까?

답변

4

질문을 게시하자마자 답변을 찾았습니다. 같은 문제가있는 사람을 도울 답변을 게시하고 있습니다. 클래스를 public으로 표시. 이것은 의도적으로 설계된 것인지 아닌지는 모르지만 최소한 여기에서 오류 메시지를 개선 할 수있을 것 같습니다.

희망이 있으면 도움이됩니다.

0

프로젝트의 속성에서 "시작 객체"를 설정하여 마술처럼 수정했습니다.

관련 문제