C# 自动完成盒不';无法清除键盘笔划
在我的一个应用程序中,我使用WPF工具箱中的WPF自动完成框。我通过MVVM模式实现它。绑定工作得很好,但我在尝试清除自动完成框的内容时遇到了一个小问题。将viewmodel中的绑定属性设置为null,只会部分清除文本(通过键盘输入的所有文本都不会被清除-即,如果在获取所有城市时输入CH并选择Chicago,并将绑定属性设置为null,则CH不会被清除,其余的ICAGO会被清除。) XAML如下所示:C# 自动完成盒不';无法清除键盘笔划,c#,wpf,data-binding,wpf-controls,wpftoolkit,C#,Wpf,Data Binding,Wpf Controls,Wpftoolkit,在我的一个应用程序中,我使用WPF工具箱中的WPF自动完成框。我通过MVVM模式实现它。绑定工作得很好,但我在尝试清除自动完成框的内容时遇到了一个小问题。将viewmodel中的绑定属性设置为null,只会部分清除文本(通过键盘输入的所有文本都不会被清除-即,如果在获取所有城市时输入CH并选择Chicago,并将绑定属性设置为null,则CH不会被清除,其余的ICAGO会被清除。) XAML如下所示: <my:AutoCompleteBox Grid.Row="0"
<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>
我不知道代码出了什么问题,或者这只是自动完成框中的一个bug
经过广泛的研究,我发现这篇文章:,但它并没有提供解决方案。AutoCompleteBox上似乎有一个SearchText属性,它是只读的,不能有一个setter。如果有人感兴趣,解决方案是在ClearTown函数中将
NewTown=null
更改为NewTown=newnewnewtown()
。最终得到了它。如果有人感兴趣,解决方案就是将NewTown=null
更改为NewTown=newnewnewtown()
在ClearTown函数中。是否也清除AutoCompleteBox的文本属性?@SoMoS如何使用MVVM模式清除AutoCompleteBox的文本属性?将其绑定到VM的属性,并在需要时清除。尝试了此操作,但最终结果相同。通过键盘输入的输入未被清除。如果您阅读了我上面提到的文章,那么似乎有一个SearchText属性对于保存用户输入的AutoCompleteBox是只读的(私有的)。我不知道如何清除此项。是否也清除自动完成框的文本属性?@SoMoS如何使用MVVM模式清除自动完成框的文本属性?将其绑定到VM的属性并在需要时清除。尝试了此操作,但最终结果相同。通过键盘输入的输入未被清除。如果您阅读了我上面提到的文章,那么似乎有一个SearchText属性对于保存用户输入的AutoCompleteBox是只读的(私有的)。我不知道如何清除这个。这为我解决了清除文本框的问题。这是一个黑客,但它的工作!根据SelectedItem
为空,请注意代码,因为我在一个相关的按钮命令中,该命令根据SelectedItem
属性中的内容启用/禁用。可能值得引入一些类似于空对象模式的东西,在这种模式中,您可以将SelectedItem
aTown.NullTown
对象分配给一个Town.NullTown
对象,稍后可以进行检查。这为我解决了清除文本框的问题。这是一个黑客,但它的工作!根据SelectedItem
为空,请注意代码,因为我在一个相关的按钮命令中,该命令根据SelectedItem
属性中的内容启用/禁用。可能值得引入一些类似于空对象模式的东西,您可以在其中为SelectedItem
aTown.NullTown
对象分配一个。
public void ClearTown()
{
NewTown = null;
OnPropertyChanged("NewTown");
}