【发布时间】:2012-09-13 11:07:18
【问题描述】:
在我的一个应用程序中,我使用的是 wpf 工具包中的 WPF 自动完成框。我正在通过 MVVM 模式实现它。绑定工作正常,但我在尝试清除自动完成框的内容时遇到了一个小问题。将视图模型中的绑定属性设置为空,仅部分清除文本(通过键盘输入的所有文本都不会清除 - 即,如果我在获取所有城市时输入 CH 并选择芝加哥并将绑定属性设置为空,则 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
【问题讨论】:
-
是否也清除 AutoCompleteBox 的 Text 属性?
-
@SoMoS 如何使用 MVVM 模式清除 AutoCompleteBox 的 Text 属性?
-
将其绑定到 VM 的属性并在需要时清除它。
-
试过这个,但最终结果是一样的。通过键盘输入的输入不会被清除。如果您阅读了我上面引用的文章,似乎有一个 SearchText 属性对于保存用户输入的 AutoCompleteBox 是只读的(私有)。我不知道如何清除这个。
标签: c# wpf data-binding wpf-controls wpftoolkit