簡體   English   中英

WPF AutoCompleteBox綁定.Text與Mode = TwoWay不起作用-.NET4.0

[英]WPF AutoCompleteBox binding .Text with Mode=TwoWay not working - .NET4.0

我的問題是:

我有這個MyAutoCompleteBoxACBoxDest (它從AutoCompleteBox繼承,只是帶有一個新事件EnterKeyDown但這應該與我的問題無關),其中ItemsSource只是EnterKeyDown設置的字符串列表。

我想里面的文字結合ACBoxDest永遠是一樣的公共領域我有叫代碼隱藏DestPath

目前,當我改變DestPath變量的代碼隱藏,它不也改變ACBoxDest GUI中的文本。

.xaml:

<MyACBox:MyAutoCompleteBox x:Name="ACBoxDest" FilterMode="StartsWith"
                           Text="{Binding Path=DestPath, Mode=TwoWay}"
                           ItemContainerStyle="{StaticResource containerStyle}"
                           Populating="ACBoxDestPopulating"
                           KeyboardNavigation.TabIndex="1"
                           EnterKeyDown="EnterKeyHandler"
                           GotFocus="ACBoxDestFocused"
                           LostFocus="ACBoxDestUnfocused" />

后面的代碼:

public string DestPath {get;set;}
...
private void Initialize()
{
   DestPath = _DEFAULT_TARGET_PATH;
   if (!ACBoxDest.Text.Equals(DestPath))
      MessageBox.Show("ACBoxDest.Text != DestPath");
}

^為了簡化調試說明,每次都會彈出MessageBox 這意味着,內文ACBoxDest不等於DestPath ,即使他們勢必Mode=TwoWay 有人知道為什么會這樣嗎,我該如何解決?

非常感激。 謝謝。

如果要在“綁定”中使用它,則“ DestPath”必須是一個屬性。

綁定的來源可以是任何公共屬性,包括其他控件的屬性,公共語言運行時(CLR)對象,XAML元素,ADO.NET數據集,XML片段等。

MSDN上的更多詳細信息

按照下面的注釋:為了在屬性更新時更新UI,您的VM類需要實現INotifyPropertyChanged,並且在DestPath的“ set”中,您需要引發屬性更改事件。 MSDN鏈接包含詳細信息和示例代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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