Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 自动完成盒不';无法清除键盘笔划_C#_Wpf_Data Binding_Wpf Controls_Wpftoolkit - Fatal编程技术网

C# 自动完成盒不';无法清除键盘笔划

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"

在我的一个应用程序中,我使用WPF工具箱中的WPF自动完成框。我通过MVVM模式实现它。绑定工作得很好,但我在尝试清除自动完成框的内容时遇到了一个小问题。将viewmodel中的绑定属性设置为null,只会部分清除文本(通过键盘输入的所有文本都不会被清除-即,如果在获取所有城市时输入CH并选择Chicago,并将绑定属性设置为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>
我不知道代码出了什么问题,或者这只是自动完成框中的一个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
a
Town.NullTown
对象分配给一个
Town.NullTown
对象,稍后可以进行检查。这为我解决了清除文本框的问题。这是一个黑客,但它的工作!根据
SelectedItem
为空,请注意代码,因为我在一个相关的按钮命令中,该命令根据
SelectedItem
属性中的内容启用/禁用。可能值得引入一些类似于空对象模式的东西,您可以在其中为
SelectedItem
a
Town.NullTown
对象分配一个
   public void ClearTown()
    {

    NewTown = null;

    OnPropertyChanged("NewTown");
}