在我的应用程序中,我正在使用wpf工具包中的WPF自动完成框。我正在通过MVVM模式实现它。绑定工作正常,但我在尝试清除自动完成框的内容时遇到一个小问题。将viewmodel中的bound属性设置为null,仅部分清除文本(通过键盘输入的所有文本都不会被清除 - 即,如果我在获取所有城市时输入CH并选择Chicago并将bound属性设置为null,则CH没有被清除,其余的ICAGO是。)
XAML看起来像这样:
<my:AutoCompleteBox Grid.Row="0"
Grid.Column="1"
HorizontalAlignment="Left"
Margin="0,6,0,0"
Name="acTown"
SelectedItem="{Binding NewTown, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
ValueMemberBinding="{Binding Converter={StaticResource TownConverter}}"
Populating="Populating"
VerticalAlignment="Top"
Height="Auto"
</my:AutoCompleteBox>
viewmodel中清除该框的方法是:
public void ClearTown()
{
NewTown = null;
OnPropertyChanged("NewTown");
}
我无法弄清楚代码有什么问题,或者这只是自动完成框中的错误?
经过广泛的研究,我发现了这篇文章:How do you clear the Silverlight AutoCompleteBox SearchText using MVVM,但它没有提供解决方案。 AutoCompleteBox上的SearchText属性似乎是只读的,不能有setter
答案 0 :(得分:4)
终于明白了。如果有人感兴趣,解决方案是在ClearTown函数中将NewTown = null
更改为NewTown = new NewTown()
。