종속성 속성 "텍스트"가 포함 된 사용자 지정 TextBox 컨트롤 (TextBox에서 파생되지는 않음)을 만들었습니다.TwoWay 바인딩에서 소스의 변경 사항을 어떻게 전달합니까?
두 인스턴스를 추가하고 TwoWay 바인딩을 사용하여 내 뷰 모델의 속성에 바인딩했습니다.
내 사용자 지정 TextBox 컨트롤 내에서 변경 내용을보기 모델의 속성에 전파하는 방식으로 Text 속성을 업데이트하려면 어떻게해야합니까?
사용자 지정 컨트롤에 "Text"속성을 설정하면 뷰 모델의 속성을 null로 남겨 두는 바인딩이 바뀝니다.
나는이 간단 할 것이라고 생각했을 것이다 그러나 나는 그것을 (표준 TextBox 컨트롤이 그것을 수행해야합니다!)건배
하는 방법을 볼 수 없습니다
편집 :
사용자 지정 컨트롤 :
public class SampleCustomControl : CustomControl
{
public string Text
{
get { return (string)GetValue(TextProperty); }
set { SetValue(TextProperty, value); }
}
public static readonly DependencyProperty TextProperty =
DependencyProperty.Register("Text", typeof(string), typeof(SampleCustomControl), new PropertyMetadata(null));
public void Update()
{
// This replaces my binding, I want it to pass the new value
// through to the "SomeProperty" two way binding.
Text = "some value";
}
}
사용법 :
<Controls:SampleCustomControl Text="{Binding SomeProperty, Mode=TwoWay}" />
모든 DependencyProperty 업데이트는 바인딩의 변경 이벤트를 트리거하는 장면 뒤에서 SetValue를 통해 수행됩니다. 일반적으로 GetValue/SetValue를 호출하는 DP에 set/get 쌍을 추가했습니다 (사용자가 직접 사용할 수 있음). XAML 및 제어 및 사용 코드가 사소한 것임을 보여 줄 수 있습니까? 텍스트 속성을 설정하면 바인딩이 변경되어서는 안됩니다. –
그 자체가 SetValue 메서드를 호출하는 Text 속성을 설정하고 있는데 바인딩을 대체하고 있습니다. - 설명하기 위해 몇 가지 코드를 추가하겠습니다. –