WPF ListView数据项右键菜单ContextMenu重写,以及右键菜单中button绑定ViewModel命令
想给数据项添加右键菜单,重新给右键菜单写了样式,右键菜单中包含button,如何给Button的Command绑定到页面的ViewModel,以下是代码示例
<DataTemplate x:Key="GridViewItemDataTemplate"> <Border Width="80" Height="80" BorderBrush="Black" BorderThickness="1" Background="Black"> <Border.ContextMenu> <ContextMenu Width="88" Height="72"> <ContextMenu.Style> <Style TargetType="{x:Type ContextMenu}"> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type ContextMenu}"> <Border Margin="0" Background="#FF171F27" BorderBrush="#FF707070" BorderThickness="1,1,1,1" CornerRadius="4"> <Grid Margin="5,5,5,5"> <Grid.RowDefinitions> <RowDefinition Height="*"/> <RowDefinition Height="*"/> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition Width="20"/> <ColumnDefinition Width="*"/> </Grid.ColumnDefinitions> <!--<Button Grid.Row="0" Grid.Column="0" Content="R+" Command="{Binding DataContext.UpdateAiCellCommand, RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=Page}}" CommandParameter="{Binding }"/>--> <TextBlock Grid.Row="0" Grid.Column="0" Text="R:" Foreground="#FFFF0000" HorizontalAlignment="Left" VerticalAlignment="Center" FontSize="14"/> <uc:NumUpDown Grid.Row="0" Grid.Column="1" Value="{Binding RNum, Mode=TwoWay}" Foreground="#FFFF0000" FontSize="14" Height="25" VerticalAlignment="Center" CornerRadius="4" Minimum="0" Maximum="99" AllowInputType="AllowNumericOnly"/> <TextBlock Grid.Row="1" Grid.Column="0" Text="G:" Foreground="#FF00FA00" HorizontalAlignment="Left" VerticalAlignment="Center" FontSize="14"/> <uc:NumUpDown Grid.Row="1" Grid.Column="1" Value="{Binding GNum, Mode=TwoWay}" Foreground="#FF00FA00" FontSize="14" Height="25" VerticalAlignment="Center" CornerRadius="4" Minimum="0" Maximum="99" AllowInputType="AllowNumericOnly"/> </Grid> </Border> </ControlTemplate> </Setter.Value> </Setter> </Style> </ContextMenu.Style> </ContextMenu> </Border.ContextMenu> <Grid> <Image Source="/Resources/Images/cell.png" Stretch="Fill"/> <Grid Margin="5,8"> <Grid.Effect> <DropShadowEffect Color="Black" BlurRadius="5" Direction="0" ShadowDepth="0" Opacity="1" /> </Grid.Effect> <Grid.RowDefinitions> <RowDefinition Height="17"/> <RowDefinition Height="*"/> <RowDefinition Height="17"/> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition Width="auto"/> <ColumnDefinition Width="10"/> <ColumnDefinition Width="auto"/> <ColumnDefinition Width="*"/> </Grid.ColumnDefinitions> <TextBlock Grid.Row="0" Grid.Column="0" Text="{Binding RNum}" Foreground="#FFFF0000"/> <TextBlock Grid.Row="0" Grid.Column="2" Text="{Binding GNum}" Foreground="#FF00FA00"/> <TextBlock Grid.Row="2" Grid.Column="0" Text="{Binding CNum}" Foreground="#FF00FFFD"/> <TextBlock Grid.Row="2" Grid.Column="2" Text="{Binding YellowNum}" Foreground="#FFF7F800"/> </Grid> <CheckBox Width="16" Height="16" HorizontalAlignment="Right" VerticalAlignment="Bottom" Margin="0,0,3,3" IsChecked="{Binding IsChecked, Mode=TwoWay}"> <CheckBox.Effect> <DropShadowEffect Color="Gray" BlurRadius="10" Direction="0" ShadowDepth="0" Opacity="0.5" /> </CheckBox.Effect> </CheckBox> </Grid> </Border> </DataTemplate>
效果如下:
以上作为记录
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现