gpt4 book ai didi

c# - 动态生成时如何判断单击了哪个按钮? (MVVM)

转载 作者:行者123 更新时间:2023-12-03 10:42:56 26 4
gpt4 key购买 nike

我有一个 SearchResultsViewModel 具有可观察的配方类集合和一个显示配方的命令:

    private ObservableCollection<Recipe> _searchedRecipes;
public ObservableCollection<Recipe> SearchedRecipes
{
get
{
return _searchedRecipes;
}
set
{
_searchedRecipes = value;
OnPropertyChanged();
}
}
#endregion

#region Show Recipe Command

public ICommand ShowRecipeCommand { get { return new RelayCommand(() =>
ExecuteShowRecipeCommand()); } }

public void ExecuteShowRecipeCommand()
{
_locator.Main.CurrentViewModel = new DisplayRecipeViewModel();
}
#endregion

另一个 ViewModel 执行查询并将结果传递到此 ViewModel 的构造函数中。
在 SearchResultsViewModel 的 XAML 部分中,结果以动态按钮的形式呈现。每个食谱都是一个按钮,其名称为内容:
     <StackPanel>
<ItemsControl ItemsSource="{Binding Path = SearchedRecipes}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Button Content="{Binding Path=Name}" Command="{Binding ShowRecipeCommand}"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</StackPanel>

我希望 ShowRecipeCommand 创建新的 DisplayRecipeViewModel 并绑定(bind)一个 View,显示被点击的 Recipe 的属性,但我不知道如何
告诉哪个按钮被点击了。
是否可以在没有代码的情况下做到这一点?

最佳答案

您可以将命令属性移动到 Recipe类(class)。然后每个 Button (或者更确切地说,由 Button 表示的每个数据对象)都有自己的命令,并且您始终知道单击了哪个命令。

如果 Recipe类是由某些 ORM 自动生成的,例如 Entity Framework ,您可以创建另一个部分类,您可以在其中定义命令属性。

关于c# - 动态生成时如何判断单击了哪个按钮? (MVVM),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46691334/

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