WPF 命令参数 以及 XAML设定命令

 

 

<Window x:Class="WpfDemo.CommandParameter"
        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:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WpfDemo"
        mc:Ignorable="d"
        Title="CommandParameter" Height="300" Width="300">
    <Grid>
        <Grid HorizontalAlignment="Right" Height="239" Margin="0,10,10,0" VerticalAlignment="Top" Width="272">
            <Grid.RowDefinitions>
                <RowDefinition Height="40*"></RowDefinition>
                <RowDefinition Height="7"></RowDefinition>
                <RowDefinition Height="21*"></RowDefinition>
                <RowDefinition Height="7"></RowDefinition>
                <RowDefinition Height="21*"></RowDefinition>
                <RowDefinition Height="7"></RowDefinition>
                <RowDefinition Height="133*"/>
            </Grid.RowDefinitions>
            <Label x:Name="label" Content="Name" VerticalContentAlignment="Center" VerticalAlignment="Center" HorizontalAlignment="Left" Grid.Row="0" Height="36" Width="50" Margin="0,2"/>
            <TextBox x:Name="textBox" Grid.Row="0"  Height="22" Margin="64,8,25,0" VerticalAlignment="Top"/>
            <Button Grid.Row="2" Content="NEW Teacher" Command="New" CommandParameter="Teacher" CommandTarget="{Binding ElementName=textBox}"/>
            <Button Grid.Row="4" Content="NEW Student" Command="New" CommandParameter="Student" CommandTarget="{Binding ElementName=textBox}"/>
            <ListBox x:Name="listBox"  Grid.Row="6" />
        </Grid>
    </Grid>
    <Window.CommandBindings>
        <CommandBinding Command="New" CanExecute="CommandBinding_CanExecute" Executed="CommandBinding_Executed"></CommandBinding>
    </Window.CommandBindings>
</Window>

  

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;

namespace WpfDemo
{
    /// <summary>
    /// CommandParameter.xaml 的互動邏輯
    /// </summary>
    public partial class CommandParameter : Window
    {
        public CommandParameter()
        {
            InitializeComponent();
        }

        private void CommandBinding_CanExecute(object sender, CanExecuteRoutedEventArgs e)
        {
            if(e.OriginalSource is TextBox)
            {
                TextBox t = e.OriginalSource as TextBox;
                if(string.IsNullOrEmpty(t.Text))
                {
                    e.CanExecute = false;
                }
                else
                {
                    e.CanExecute = true;
                }
            }else
            {
                e.CanExecute = false;
            }
            
        }

        private void CommandBinding_Executed(object sender, ExecutedRoutedEventArgs e)
        {
            if (e.OriginalSource is TextBox)
            {
                TextBox t = e.OriginalSource as TextBox;
                if(e.Parameter.ToString()=="Teacher")
                {
                    this.listBox.Items.Add("Teacher:"+t.Text);
                }
                if (e.Parameter.ToString() == "Student")
                {
                    this.listBox.Items.Add("Student:" + t.Text);
                }

            }
        }
    }
}

  

posted @ 2021-08-15 15:48  zq爱生活爱代码  阅读(96)  评论(0编辑  收藏  举报