2011-03-10 6 views
10

으로 나는 연결된 속성의 클래스있어 :연결된 속성은 XAML 요소

public static class XamlProps 
{ 
    #region Attached Properties 

    private static readonly DependencyProperty FooProperty = DependencyProperty.RegisterAttached(
     "Foo", 
     typeof(string), 
     typeof(XamlProps), 
     null); 

    public static void SetFoo(DependencyObject obj, string action) 
    { 
     obj.SetValue(FooProperty, action); 
    } 
} 

을 그리고 내 XAML에서 이러한 속성 사용

<Border me:XamlProps.Foo="Foo to the Bar"> 

하지만 지금이의 더 큰 값을 원하는을 속성이므로 요소로 사용하고 싶습니다.

<Border> 
    <me:XamlProps.Foo>Foo to the Bar</me:XamlProps.Foo> 
</Border> 

이제 Silverlight는 더 이상 SetFoo()를 호출하지 않습니다. 어떻게 작동 시키나요?

Windows Phone 7의 경우 중요합니다.

답변

5
당신이 구문을 사용하는 경우이 유형을 지정해야합니다

: 시스템에

<Border> 
    <me:XamlProps.Foo> 
     <sys:String>Foo to the Bar</sys:String> 
    </me:XamlProps.Foo> 
</Border> 

에서 sys 네임 스페이스 맵을. 당신은 또한 당신은 setFoo를 사용해에 의존해서는 안

typeof(XamlProps) 
+0

이것은 매력처럼 작동했습니다. 고마워요. – Hounshell

+0

에 이것을 감쌀 수있는 방법이 있습니까? – Hounshell

+0

다음과 같이 보이지 않습니다 : http://stackoverflow.com/questions/4048223/silverlight-xaml-textblock-text-with-cdata-not-showing-up-at-runtime – Damian

1

가 호출되고 있어야한다 아마 복사 - 붙여 넣기 오타하지만 등록

typeof(XamlActions) 

GetFoo ...

를 정의 할 필요가있다. 뭐든지 SetValue (FooProperty, "blah")를 호출하고이를 무시할 수 있습니다.

DependencyProperty에 PropertyChangedCallback을 정의해야합니다. Register 전화로 변경 사항을 알립니다.

+0

SetFoo에 의존하지 않습니다.)이 경우에는 설정되어 있는지 확인하기 위해 단계별로 제외하고 호출됩니다. 그리고 궁극적으로 나는 실제로 이것들을 바꾸고 싶지 않습니다. 이것은 초기 행동이며 계속 진행되지 않습니다. – Hounshell

+0

하지만 SetFoo를 명시 적으로 호출하지 않는 한 XAML을 통해 호출 될 것이라는 보장은 없습니다. – CodeNaked