繁体   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