【发布时间】:2014-02-24 20:18:14
【问题描述】:
我的问题是:
我有这个MyAutoCompleteBox,ACBoxDest(它继承自AutoCompleteBox,只是带有一个新事件EnterKeyDown,但这应该与我的问题无关)其中ItemsSource只是一个字符串列表代码隐藏。
我想将ACBoxDest 中的文本绑定到始终与我在代码隐藏中名为DestPath 的公共字段相同。
目前,当我在代码隐藏中更改 DestPath 变量时,它不会同时更改 gui 中的 ACBoxDest 文本。
.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。有谁知道为什么会发生这种情况以及我该如何解决?
非常感谢。谢谢。
【问题讨论】:
-
用实际的
AutoCompleteBox替换你的控件,看看你是否有同样的问题。 -
谢谢@Sheridan,我没有具体说明,但我已经尝试过了。同样的问题。
标签: c# wpf xaml binding autocompletebox