gpt4 book ai didi

ItemsControl 内按钮的 WPF 命令参数

转载 作者:行者123 更新时间:2023-12-04 14:29:04 25 4
gpt4 key购买 nike

我正在使用 MVVM 设计模式开发 WPF 应用程序。
在应用程序中,我有一个 ItemsControl 显示几个按钮(按钮的数量不是恒定的,根据应用程序的逻辑流程)。
ItemsControl 绑定(bind)到 ViewModel 中的 LinkedList。
我能够为按钮定义一个命令,并且只有当命令没有参数时,我才能在 ViewModel 中获取命令处理程序......
我需要能够知道单击了哪个按钮,因此我想要一个带参数的命令。

我需要如何定义我的 View ?
CommandParameter 的语法是什么,我可以使用哪个参数来获取 Button 内容?
ViewModel 中的 Command 签名是什么?

请注意,我使用的是 MVVM Light 的 RelayCommand。
View 的相关代码在这里。
提前致谢

<UserControl x:Class="Museum.Controls.CategoriesView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:DesignHeight="130" d:DesignWidth="418">
<UserControl.Resources>
<DataTemplate x:Key="CategoriesButtonsTemplate">
<Button Content="{Binding }"
Command="{Binding RelativeSource={RelativeSource AncestorType={x:Type ItemsControl}}, Path=DataContext.CategorySelectedCommand}"
/>
</DataTemplate>
</UserControl.Resources>
<Grid ShowGridLines="True">
<Grid.RowDefinitions>
<RowDefinition Height="50"></RowDefinition>
<RowDefinition Height=" 40"></RowDefinition>
<RowDefinition Height=" 40"></RowDefinition>
</Grid.RowDefinitions>
<Grid x:Name="SubSubjectGrid" Grid.Row="0"></Grid>
<Grid x:Name="CategoriesGrid" Grid.Row="1">
<ItemsControl Grid.Row="1"
ItemsSource="{Binding Path=CategoriesButtons}"
ItemTemplate="{StaticResource CategoriesButtonsTemplate}" >
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Stretch"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
</Grid>
<Grid x:Name="SelectedCategoryGrid" Grid.Row="2"></Grid>
</Grid>
</UserControl>

最佳答案

您可以像这样简单地使用 CommandParameter="{Binding }"

       <DataTemplate x:Key="CategoriesButtonsTemplate">
<Button Content="{Binding }"
Command="{Binding RelativeSource={RelativeSource AncestorType={x:Type ItemsControl}}, Path=DataContext.CategorySelectedCommand}"
CommandParameter="{Binding }"
/>
</DataTemplate>

关于ItemsControl 内按钮的 WPF 命令参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19217325/

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