[英]C# WPF textbox when binding data,how to add other strings in the Text property?
[英]WPF set Binding dynamically back to original state after changing Text property of textbox in C#
我有幾個文本框,其中在WPF中設置了復雜的數據綁定。 僅從Viewsource的列表框中選擇項目時,此方法會很好地工作。 (使用可觀察的集合)
但是,當我按下某個按鈕時,我希望文本框變為空白或包含零,這是一個問題。 所以我將c#中的.Text設置為0或空白,具體取決於texbox。 但是,這樣做似乎也會刪除我對此元素的綁定。 如何通過C#將綁定恢復為原始狀態?
XAML示例
<TextBox Name="BandNrTextBox" Width="200" IsReadOnly="True">
<TextBox.Text>
<Binding Path="BandNr" UpdateSourceTrigger="PropertyChanged" Mode="OneWay">
</Binding>
</TextBox.Text>
</TextBox>
之后,我在C#中設置BandNr元素
BandNrTextBox.Text = "0";
現在,當我通常從列表框中選擇另一個選項時,它應該再次通過綁定獲得正確的值,但是似乎綁定消失了,因為在我的textBlock中什么也沒有出現。
這不是IMO的正確解決方案,因為您應該直接處理值以實現所需的值。 打開/關閉綁定似乎適得其反。 這樣,設置.Text
屬性會將綁定更改為直接值。 如果您需要重新綁定,您可以這樣做。
Binding b = new Binding();
b.Source = YourViewModel; //Whatever contains BandNr
b.Path = new PropertyPath("BandNr");
b.Mode = BindingMode.OneWay;
b.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged;
BindingOperations.SetBinding(BandNrTextBox, TextBox.TextProperty, b);
另外請注意,您可以簡化XAML
<TextBox Name="BandNrTextBox" Width="200" IsReadOnly="True" Text="{Binding BandNr, UpdateSourceTrigger=PropertyChanged, Mode=OneWay}"/>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.