내보기의 컨트롤 (XAML)에 연결하려는 종속성 속성을 사용하여 동작 클래스를 만들었습니다. MVVM을 사용하고 있는데이 속성을 내 ViewModel의 속성에 바인딩하여 설정해야하지만 설정되지는 않습니다.UWP의 바인딩에 의해 연결된 동작 속성이 설정되지 않았습니다.
행위 등급 :
이public static class TestBehavior
{
public static readonly DependencyProperty SomeStringProperty =
DependencyProperty.Register("SomeString", typeof(string), typeof(TestBehavior), new PropertyMetadata(""));
public static string GetSomeString(DependencyObject o)
{
return (string)o.GetValue(SomeStringProperty);
}
public static void SetSomeString(DependencyObject o, string value)
{
o.SetValue(SomeStringProperty, value);
}
}
XAML은 : 여기에 내가 뭘 원하는지의 단순화 된 버전입니다
<TextBlock Text="{Binding ViewModelProperty}" local:TestBehavior.SomeString="{Binding ViewModelProperty}" />
TextBlock의의 "텍스트"속성이 제대로 결합은, 그러나 행동의 "SomeString"속성은 그렇지 않습니다.
흥미롭게도 - 동작 속성을 값에 "하드 코드"하면 설정됩니다. 예 :
<TextBlock Text="{Binding TestValue}" local:TestBehavior.SomeString="Foo" /> <!-- This Works -->
행동 특성 바인딩이 작동하지 않는 이유는 무엇입니까?
정확히 내가했던 것입니다 (중단 점 사용). 콜백 메서드를 추가하고 바인딩에서 실행합니다. 바인딩을 사용할 때 Get/Set 메서드가 실행되지 않는 이유는 무엇입니까? –
바인딩 인프라가 종속성 속성 (정상 또는 첨부)과 함께 작동하는 방식입니다. 나는 그것이 내부 최적화의 어떤 형태라고 생각한다. – ibebbs
또한'GetSomeString' 메소드는 코드가 속성에 더 쉽게 접근 할 수 있도록하는 일반적인 패턴 일뿐입니다. 플랫폼은 바인딩 할 때 값을 설정합니다. –