gpt4 book ai didi

wpf - MouseDoubleClick 在 WPF 中使用 MVVM 的 ListItem

转载 作者:行者123 更新时间:2023-12-04 20:55:31 26 4
gpt4 key购买 nike

我想在双击任何列表项时显示对话框。但是程序的流程永远不会进入 ShowTextCommand 属性。我得到了名字列表(工作正常)但我无法得到对话框。这是我的 XAML:

<ListView  ItemsSource="{Binding List}"  >
<ListView.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}">
<TextBlock.InputBindings>
<MouseBinding MouseAction="LeftDoubleClick" Command="{Binding ShowTextCommand, UpdateSourceTrigger=PropertyChanged}"></MouseBinding>
</TextBlock.InputBindings>
</TextBlock>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>

这是我的命令类:

public class EnterTextCommand : ICommand
{
public EnterTextCommand(TekstoviViewModel vm)
{
ViewModel = vm;
}
private TekstoviViewModel ViewModel;
#region ICommand interface
public event EventHandler CanExecuteChanged
{
add { CommandManager.RequerySuggested += value; }
remove { CommandManager.RequerySuggested -= value; }
}
public bool CanExecute(object parameter)
{
return true;
// return ViewModel.CanExecute;
}


public void Execute(object parameter)
{
ViewModel.EnterText();
}
#endregion
}

和 View 模型

 private ICommand command;
public ICommand ShowTextCommand
{
get
{
if (command == null)
command = new EnterTextCommand(this);
return command;
}
internal void EnterText()
{
MessageBox.Show("Event Success");
}

有人可以帮忙吗?

最佳答案

您的DataTemplate 找不到命令,请使用ElementName 绑定(bind)指定它的完整路径

<ListView  ItemsSource="{Binding List}"  x:Name="MainList">
<ListView.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}">
<TextBlock.InputBindings>
<MouseBinding MouseAction="LeftDoubleClick" Command="{Binding DataContext.ShowTextCommand, UpdateSourceTrigger=PropertyChanged,ElementName=MainList}"></MouseBinding>
</TextBlock.InputBindings>
</TextBlock>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>

关于wpf - MouseDoubleClick 在 WPF 中使用 MVVM 的 ListItem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32372153/

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