none
commandbanding RRS feed

  • 问题

  • 你好:

         这个问题,我不知道怎样问,我还是贴段代码吧~

        xmal文件

    <Window x:Class="WpfApplication3.Window1"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="CloseCommand"
        Name="RootWindow"
        >
        <Window.CommandBindings>
            <CommandBinding Command="change"
           CanExecute="HelpCanExecute"
           Executed="HelpExecuted" />
        </Window.CommandBindings>

        <Button Command="change" Content="Help Command Button" />
    </Window>

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    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.Navigation;
    using System.Windows.Shapes;

    namespace WpfApplication3
    {
        /// <summary>
        /// Window1.xaml 的交互逻辑
        /// </summary>
        public partial class Window1 : Window
        {
            public Window1()
            {
                InitializeComponent();
            }

            // Executed event handler.
            private void CloseCommandHandler(object sender, ExecutedRoutedEventArgs e)
            {
                       }

            // CanExecute event handler.
            private void CanExecuteHandler(object sender, CanExecuteRoutedEventArgs e)
            {
                   }
            private void HelpCanExecute(object sender, CanExecuteRoutedEventArgs e)
            {
                e.CanExecute = true;
                e.Handled = true;
            }

            private void HelpExecuted(object sender, ExecutedRoutedEventArgs e)
            {
                       }
                }
    }

    如果上面的commadbanding 中的command 属性值不为:Applicationcommand,中的属性。就会报错。

    applicationcommand中的属性有:

    ms-help://MS.MSDNQTR.v90.chs/fxref_presentationcore/html/e8ff7c3a-384b-d5a2-1186-e529432f5721.htm

    下面是我的问题:

    我想把command的属性变为一个任意定义的值,入xxhfid,程序也能正常运行.....

    谢谢,上面我主要是想用到commandbandig zhong canexcute 和execute 两个属性

    求指教.....


     

    2011年3月2日 15:52

答案

  • elegantluo,

    你好!

    根据你的描述,我想你的问题应该是如何在XAML文件中实现自定义的command绑定。

    我们先来分析为什么你的代码会出现运行时错误。首先看CommandBinding的Command属性,其作用是绑定一个RoutedCommand到命令处理函数,也就是你所希望用到的CanExcute和Excute两个方法。由于ApplicationCommand是内置的RoutedCommand,所以不需要作额外的转换操作。如果你要绑定自己的命令,如这里的change,程序将无法识别出change是一个RoutedCommand,这就需要我们作另外的处理。

    我写了一些简单的代码供你参考,

    首先在cs文件中加入一个类:

     public class MyCommand
     {
      public static RoutedCommand change = new RoutedCommand();
     } 
    

    接着在XAML中作如下更改:

    <Window x:Class="WpfApplication3.Window1"
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
     <strong>xmlns:local="clr-namespace:WpfApplication3"</strong>
     Title="CloseCommand"
     Name="RootWindow">
     <Window.CommandBindings>
      <strong><CommandBinding Command="local:MyCommand.change"</strong>      
      CanExecute="HelpCanExecute"
      Executed="HelpExecuted" />
     </Window.CommandBindings>
     <Button <strong>Command="local:MyCommand.change"</strong> Content="Help Command Button" />
    </Window>
    
    

    注意加粗的部分,我们通过自定义的命令,完成了CommandBinding.

    同时我在互联网上找到一篇写的很好的关于WPF自定义命令的文章,请参考 http://www.cnblogs.com/gaixiaojie/archive/2010/09/01/1815015.html 以获得更多帮助。

    希望以上信息能有所帮忙,如果你还有问题,请让我知道。

    This response contains a reference to a third party World Wide Web site. Microsoft is providing this information as a convenience to you. Microsoft does not control these sites and has not tested any software or information found on these sites; therefore, Microsoft cannot make any representations regarding the quality, safety, or suitability of any software or information found there. There are inherent dangers in the use of any software found on the Internet, and Microsoft cautions you to make sure that you completely understand the risk before retrieving any software from the Internet.

    此回复包含了指向第三方的网址信息. Microsoft提供此链接以帮助您了解更多信息.此链接不受控于Microsoft且此链接包含的任何软件与信息未经验证.Microsoft无法保证其质量,安全性以及稳定性.从互联网获取软件与信息有潜在的危险, Microsoft提醒您知悉此风险.

     

    如果您对我们的论坛在线支持服务有任何的意见或建议,请通过邮件告诉我们。
    MSDN 论坛好帮手 立刻免费下载 MSDN 论坛好帮手


    • 已标记为答案 elegantluo 2011年3月3日 4:46
    2011年3月3日 0:54
    版主
  • 解决问题前,看一些这边MSDN上的文档,链接是:

    http://msdn.microsoft.com/zh-cn/library/ms752308.aspx

    注意最后的“创建自定义命”令部分,这部分包括了参考链接和参考示例,读完了 看完了,相信你就理解了。


    Sheldon _Xiao [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    • 已标记为答案 elegantluo 2011年3月3日 4:47
    2011年3月3日 2:18
    版主

全部回复

  • elegantluo,

    你好!

    根据你的描述,我想你的问题应该是如何在XAML文件中实现自定义的command绑定。

    我们先来分析为什么你的代码会出现运行时错误。首先看CommandBinding的Command属性,其作用是绑定一个RoutedCommand到命令处理函数,也就是你所希望用到的CanExcute和Excute两个方法。由于ApplicationCommand是内置的RoutedCommand,所以不需要作额外的转换操作。如果你要绑定自己的命令,如这里的change,程序将无法识别出change是一个RoutedCommand,这就需要我们作另外的处理。

    我写了一些简单的代码供你参考,

    首先在cs文件中加入一个类:

     public class MyCommand
     {
      public static RoutedCommand change = new RoutedCommand();
     } 
    

    接着在XAML中作如下更改:

    <Window x:Class="WpfApplication3.Window1"
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
     <strong>xmlns:local="clr-namespace:WpfApplication3"</strong>
     Title="CloseCommand"
     Name="RootWindow">
     <Window.CommandBindings>
      <strong><CommandBinding Command="local:MyCommand.change"</strong>      
      CanExecute="HelpCanExecute"
      Executed="HelpExecuted" />
     </Window.CommandBindings>
     <Button <strong>Command="local:MyCommand.change"</strong> Content="Help Command Button" />
    </Window>
    
    

    注意加粗的部分,我们通过自定义的命令,完成了CommandBinding.

    同时我在互联网上找到一篇写的很好的关于WPF自定义命令的文章,请参考 http://www.cnblogs.com/gaixiaojie/archive/2010/09/01/1815015.html 以获得更多帮助。

    希望以上信息能有所帮忙,如果你还有问题,请让我知道。

    This response contains a reference to a third party World Wide Web site. Microsoft is providing this information as a convenience to you. Microsoft does not control these sites and has not tested any software or information found on these sites; therefore, Microsoft cannot make any representations regarding the quality, safety, or suitability of any software or information found there. There are inherent dangers in the use of any software found on the Internet, and Microsoft cautions you to make sure that you completely understand the risk before retrieving any software from the Internet.

    此回复包含了指向第三方的网址信息. Microsoft提供此链接以帮助您了解更多信息.此链接不受控于Microsoft且此链接包含的任何软件与信息未经验证.Microsoft无法保证其质量,安全性以及稳定性.从互联网获取软件与信息有潜在的危险, Microsoft提醒您知悉此风险.

     

    如果您对我们的论坛在线支持服务有任何的意见或建议,请通过邮件告诉我们。
    MSDN 论坛好帮手 立刻免费下载 MSDN 论坛好帮手


    • 已标记为答案 elegantluo 2011年3月3日 4:46
    2011年3月3日 0:54
    版主
  • 解决问题前,看一些这边MSDN上的文档,链接是:

    http://msdn.microsoft.com/zh-cn/library/ms752308.aspx

    注意最后的“创建自定义命”令部分,这部分包括了参考链接和参考示例,读完了 看完了,相信你就理解了。


    Sheldon _Xiao [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    • 已标记为答案 elegantluo 2011年3月3日 4:47
    2011年3月3日 2:18
    版主
  • 非常感谢.....

    2011年3月3日 4:47