wpf mvvm 在模板里添加button command 注册事件

本文介绍如何在WPF MVVM模式下,于模板内部创建Button并正确绑定Command,实现事件注册和处理。通过此方法,可以更好地分离视图和视图模型,提升代码的可维护性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Window 的名称为

<Window x:Class="wpfYourSystem.Views.Workstation"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"  
        xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"  
        xmlns:input="clr-namespace:System.Windows.Input;assembly=PresentationCore" 
       xmlns:controls="clr-namespace:wpfYourSystem.Resource"   
        xmlns:util="clr-namespace:wpfYourSystem.Util" 
        xmlns:load="clr-namespace:wpfYourSystem.Resource" 
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:wpfYourSystem.Views" Name="frmWorkstation"   MouseLeftButtonDown="MouseLeftButtonDownCommand"
        mc:Ignorable="d"  Width="1040"  AllowsTransparency="True" WindowStartupLocation="CenterScreen" WindowStyle="None" Icon="../image/systemLogo.ico">

前端样式:

 <Style   TargetType="ListBoxItem">
                <Setter Property="Background" Value="White"></Setter>
                <Setter Property="Margin" Value="20 2 20 0"></Setter>
                <Setter Property="Template">
                    <Setter.Value>
                        <ControlTemplate TargetType="ListBoxItem">
                            <Border BorderBrush="Black" Background="White" Margin="0 2 0 5">
                                <Border.Effect>
                                    <DropShadowEffect x:Name="OG" BlurRadius="11" Color="Black" Direction="50" Opacity="0.9" RenderingBias="Performance" ShadowDepth="1">
                                        <Storyboard.TargetProperty>
                                            BlurRadius
                                        </Storyboard.TargetProperty>
                                    </DropShadowEffect>
                                </Border.Effect>

                                <!--容器放在这边,容器的Background不能为透明,否则阴影效果失效-->
                                <Grid Height="40"     x:Name="grid">
                                    <Grid.ColumnDefinitions>
                                        <ColumnDefinition Width="auto"></ColumnDefinition>
                                        <ColumnDefinition Width="auto"></ColumnDefinition>
                                        <ColumnDefinition Width="auto"></ColumnDefinition>
                                        <ColumnDefinition Width="auto"></ColumnDefinition>
                                        <ColumnDefinition ></ColumnDefinition>
                                        <ColumnDefinition Width="auto"></ColumnDefinition>
                                    </Grid.ColumnDefinitions>
                                 
                                    <TextBlock Text="{Binding StrRowNumber}" Margin="10 0 10 0" Grid.Column="0"    HorizontalAlignment="Center"  Foreground="Black" FontWeight="Bold" VerticalAlignment="Center" FontSize="20"/>
                                    <TextBlock Name="ExamineID"  Text="{Binding ExamineID}" Margin="10 0 10 0"  Grid.Column="1"     HorizontalAlignment="Center"  Foreground="Black" FontWeight="Bold" VerticalAlignment="Center" FontSize="20"/>
                                    <TextBlock Text="{Binding StrPatientName}" Margin="10 0 10 0" Grid.Column="2"     HorizontalAlignment="Center"  Foreground="Black" FontWeight="Bold" VerticalAlignment="Center" FontSize="20"/>
                                    <TextBlock Text="{Binding strExamineDepartment}" Margin="10 0 10 0" Grid.Column="3"      HorizontalAlignment="Right" VerticalAlignment="Center" FontSize="13"/>
                                    <TextBlock Text="{Binding StrBodyName}" Grid.Column="4"   Margin="10 0 10 0"  HorizontalAlignment="Right" VerticalAlignment="Center" FontSize="13"/>
                                   
                                    <StackPanel   Width="200" Orientation="Horizontal"  HorizontalAlignment="Right" Grid.Column="5"    >
                                        <Canvas  HorizontalAlignment="Right" Width="180"  Margin="3"   >

                                            <Button   Command="{Binding  DataContext.BtnWaitCommand,ElementName=frmWorkstation}" CommandParameter="{Binding ExamineID}"   HorizontalAlignment="Right" Canvas.Right="100" Height="30"  Style="{StaticResource BtnInfoStyle}" Width="60"  
                                                    Visibility="{Binding IntState,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged,Converter={StaticResource anyTypeConverter},ConverterParameter='2:Visible|other:Hidden'}"    Content="等待"></Button>
                                            <Button   Command="{Binding  DataContext.BtnBackInLineCommand,ElementName=frmWorkstation}" CommandParameter="{Binding ExamineID}"    VerticalAlignment="Center" HorizontalAlignment="Right" Canvas.Right="0"  Height="30" Style="{StaticResource BtnInfoStyle}" Width="90"   Visibility="{Binding IntState,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged,Converter={StaticResource anyTypeConverter},ConverterParameter='3:Visible|other:Hidden'}"    Content="恢复排队1" />
                                            <Button   Command="{Binding  DataContext.BtnBackInLineCommand,ElementName=frmWorkstation}" CommandParameter="{Binding ExamineID}"   VerticalAlignment="Center" HorizontalAlignment="Right" Canvas.Right="0"  Height="30" Style="{StaticResource BtnInfoStyle}" Width="90"   Visibility="{Binding IntState,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged,Converter={StaticResource anyTypeConverter},ConverterParameter='2:Visible|other:Hidden'}"    Content="恢复排队2" />
                                      
                                        </Canvas>
                                        
                                     </StackPanel>
                                </Grid>

                            </Border>

                            <ControlTemplate.Triggers>
                                <Trigger Property="IsMouseOver" Value="true">
                                    <Setter TargetName="grid" Property="Background" Value="#ff9f4c"/>
                                </Trigger>
                                <Trigger Property="Selector.IsSelected" Value="true">
                                    <Setter TargetName="grid" Property="Background" Value="#fae388"/>
                                </Trigger>
                            </ControlTemplate.Triggers>
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>
            </Style>

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值