簡體   English   中英

在C#中更改文本框的Text屬性后,WPF將綁定動態設置回原始狀態

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM