我創建了一個包含依賴項屬性「文本」的自定義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在幕後觸發綁定上的更改事件。你通常會添加一個set/get對到你的DP(這只是爲你自己使用),它也調用GetValue/SetValue。你可以顯示你的XAML和代碼的控制和使用,因爲它應該是微不足道的。設置你的文本屬性不應該改變綁定。 –
我正在設置一個Text屬性,它自己調用了SetValue方法,但是這正在替換綁定 - 我將添加一些代碼來演示它 –