为什么我的WPF命令没有触发?

时间:2012-05-26 15:39:18

标签: c# wpf mvvm

我有这个XAML:

<UserControl x:Class="Foo.UserControls.Bar"
             x:Name="FooBar"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

    <StackPanel>
        <WrapPanel Margin="4,0,0,0">
            <Button Command="{Binding Path=CreateCommand, ElementName=FooBar}">
                <TextBlock>Create</TextBlock>
            </Button>

使用此代码隐藏(已删除using s):

namespace Foo.UserControls
{
    public partial class Bar : UserControl
    {
        public DelegateCommand CreateCommand { get; private set; }

        public Bar()
        {
            InitializeComponent();

            CreateCommand = new DelegateCommand(Create);
        }

        private void Create(object action)
        {
            Console.WriteLine("foo");
        }
    }
}

使用调试器和控制台日志记录,它似乎永远不会触发。奇怪的是,绑定似乎很好,因为它不会将任何错误记录到输出中。如果我故意破坏绑定,我会得到一个绑定错误,但是使用上面的绑定我没有得到任何错误但它永远不会触发。

1 个答案:

答案 0 :(得分:8)

尝试在CreateCommand = new DelegateCommand(Create);

之前加InitializeComponent();