Why does `<Button Command={x:Static...}..>` works but `<Button Command={Binding...}..>` doesn't? <p>I'm new to WPF, and I'm trying to implement a custom <code>Command</code>, what I did is that I implemented the <code>ICommand</code> interface and I bound that implementation to a button using two ways one with a Static Extention Marckup and one with a normal Binding, it works fine with <code>{x:Static}</code>, but fails with this error when using <code>{Binding}</code></p> <blockquote> <p>System.Windows.Data Error: 39 : BindingExpression path error: 'StartCommand' property not found on 'object' ''ViewModel' (HashCode=30880833)'. BindingExpression:Path=StartCommand; DataItem='ViewModel' (HashCode=30880833); target element is 'Button' (Name=''); target</p> </blockquote> <p>here is my code</p> <p><strong>XAML</strong></p> <pre><code>&lt;Window x:Class="Window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="Window1" Height="75" Width="300"&gt; &lt;StackPanel Orientation="Horizontal" Height="30"&gt; &lt;Button Command="{Binding StartCommand}" Content="Start" Margin="5,0"/&gt; &lt;TextBlock Text="{Binding Name}"/&gt; &lt;/StackPanel&gt; &lt;/Window&gt; </code></pre> <p><strong>Code behind</strong></p> <pre><code>public partial class Window1 : Window { public Window1() { InitializeComponent(); DataContext = new ViewModel { Name = "Simple property" }; } } class ViewModel { public string Name { get; set; } // static to use with {x:Static} public ICommand StartCommand = new StartCommand(); } class StartCommand : ICommand { public bool CanExecute(object parameter) { return false; } public event System.EventHandler CanExecuteChanged { add { CommandManager.RequerySuggested += value; } remove { CommandManager.RequerySuggested -= value; } } public void Execute(object parameter) { MessageBox.Show("Start Executed"); } } </code></pre> <p>What's wrong with my code? am I messing something? thanks in advance.</p>