gpt4 book ai didi

wpf - 如何使用带有可编辑组合框的 EventToCommand 将 TextBoxBase.TextChanged 与命令绑定(bind)?

转载 作者:行者123 更新时间:2023-12-04 16:07:16 24 4
gpt4 key购买 nike

我有一个可编辑的组合框。

<ComboBox IsEditable="True">
<i:Interaction.Triggers>
<i:EventTrigger EventName="SelectionChanged">
<cmd:EventToCommand Command="{Binding CritereChangedCommand, Mode=OneWay}"/>
</i:EventTrigger>
<i:EventTrigger EventName="TextBoxBase.TextChanged">
<cmd:EventToCommand Command="{Binding CritereChangedCommand, Mode=OneWay}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</ComboBox>

我使用 GalaSoft.MvvmLight.Command.EventToCommand 来绑定(bind) SelectionChanged 事件。
我也想绑定(bind) TextChanged 事件,但这有点棘手:此事件只能通过 ComboBox TextBoxBase 属性访问,我找不到绑定(bind)此事件的正确方法。
您可以看到我的一次失败尝试:SelectionChanged 绑定(bind)工作正常,但 TextChanged 绑定(bind)不行。

我也试过这个语法:

<ComboBox IsEditable="True">
<TextBoxBase>
<i:Interaction.Triggers>
<i:EventTrigger EventName="TextChanged">
<cmd:EventToCommand Command="{Binding CritereChangedCommand, Mode=OneWay}" />
</i:EventTrigger>
</i:Interaction.Triggers>
</TextBoxBase>
<i:Interaction.Triggers>
<i:EventTrigger EventName="SelectionChanged">
<cmd:EventToCommand Command="{Binding CritereChangedCommand, Mode=OneWay}" />
</i:EventTrigger>
</i:Interaction.Triggers>
</ComboBox>

但这甚至不会编译。我在 TextBoxBase 标记上收到错误“可以实例化的类型”。

有什么想法吗?

最佳答案

我知道,回复很晚......但我希望它会帮助某人。

这里的问题是 EventTrigger类(class) Microsoft.Expression.Interactivity.dll使用 reflection通过 EventName 的值查找事件属性,这不适用于像 TextBoxBase.TextChanged 这样的附加事件.

我使用的一个选项是实现您自己的自定义EventTrigger类描述here并使用这个而不是 EventTrigger(到 CommandAction 实现的链接已损坏,但我设法使用互联网存档获取它)。

另一个选项,我不喜欢,因为它不经典MVVM Command使用,就是绑定(bind)Text ComboBox 的属性(property)到 ViewModel 中的一个属性并从 setter 上的 ViewModel 代码调用命令,如下所示:

<ComboBox IsEditable="True"
Text="{Binding Text, Mode=TwoWay}" />

在 ViewModel 中:

private string text;
public string Text
{
get { return text; }
set
{
text = value;
OnPropertyChanged("Text");
if(CritereChangedCommand.CanExecute())
CritereChangedCommand.Execute();//call your command here
}
}

关于wpf - 如何使用带有可编辑组合框的 EventToCommand 将 TextBoxBase.TextChanged 与命令绑定(bind)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18516536/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com