gpt4 book ai didi

c# - 无论如何将命令绑定(bind)到 XAML/WPF/MVVM 中的用户控件中的按钮的所有实例

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

我的问题是我有很多代码在做同样的事情。我的堆栈面板中的所有按钮都会触发一个命令,并且我想通过该命令向我的 View 模型中的方法发送一个参数。

我有以下 XAML 代码,您可以看到它重复得离谱:

<StackPanel x:Name="Row" Grid.Row="4">
<Button Content="z"
Command="{Binding ButtonClickCommand}"
CommandParameter="{Binding RelativeSource={RelativeSource Self}, Path=Content}" />
<Button Content="x"
Command="{Binding ButtonClickCommand}"
CommandParameter="{Binding RelativeSource={RelativeSource Self}, Path=Content}" />
<Button Content="c"
Command="{Binding ButtonClickCommand}"
CommandParameter="{Binding RelativeSource={RelativeSource Self}, Path=Content}" />
<Button Content="v"
Command="{Binding ButtonClickCommand}"
CommandParameter="{Binding RelativeSource={RelativeSource Self}, Path=Content}" />
<Button Content="b"
Command="{Binding ButtonClickCommand}"
CommandParameter="{Binding RelativeSource={RelativeSource Self}, Path=Content}" />
<Button Content="n"
Command="{Binding ButtonClickCommand}"
CommandParameter="{Binding RelativeSource={RelativeSource Self}, Path=Content}" />
<Button Content="m"
Command="{Binding ButtonClickCommand}"
CommandParameter="{Binding RelativeSource={RelativeSource Self}, Path=Content}" />
</StackPanel>

有没有办法可以减少重复代码的数量,无论是在 XAML 还是 View 模型中?

提前致谢

最佳答案

可行的简单解决方案,假设您在一个地方完成了按钮和命令绑定(bind),否则第一个答案(在我的帖子后看到的答案)为您提供了最简单的方法,方法是放在 ItemsControl 下并做这些事情。

   <StackPanel x:Name="Row" Grid.Row="4">
<StackPanel.Resources>
<Style TargetType="{x:Type Button}">
<Setter Property="Command" Value="{Binding ButtonClickCommand}" />
<Setter Property="CommandParameter" Value="{Binding RelativeSource={RelativeSource Self}, Path=Content}"
/>
</Style>
</StackPanel.Resources>
<Button Content="z" />
<Button Content="x" />
<Button Content="c" />
<Button Content="v" />
<Button Content="b" />
<Button Content="n" />
<Button Content="m" />
</StackPanel>

希望这可以帮助你:)

关于c# - 无论如何将命令绑定(bind)到 XAML/WPF/MVVM 中的用户控件中的按钮的所有实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52890677/

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