Tuesday, 26 August 2014


Share/Bookmark

Introduction

Worried over this exception? This happens when you haven’t set the Path= on binding. By default WPF binding will take the Path= part by default. But on controls which have a two way binding by default, this seems to be not working. You may have to set it explicitly.

 But in certain scenarios, you may be binding the value in a DataTemplate, for example,
 <DataTemplate x:Key="BoolValueTemplate">

        <DockPanel>
            <RadioButton IsChecked="{Binding }" GroupName="IsSelectedGroup">
        </RadioButton>
        <RadioButton IsChecked="{Binding Converter={StaticResource InvertedValueConverter}}" GroupName="IsSelectedGroup">
        </RadioButton>
        </DockPanel>

Here you prefer the control to take the default value which is set by the ContentControl or TemplateParent. If you try to bind it like this, you will get an exception which says like, Two-way binding requires Path or XPath.

To fix this, you have to specify the path like as shown below.
Path=.


<DataTemplate x:Key="BoolValueTemplate">
        <DockPanel>
            <RadioButton IsChecked="{Binding Path=.}" GroupName="IsSelectedGroup">
        </RadioButton>
        <RadioButton IsChecked="{Binding Path=. , Converter={StaticResource InvertedValueConverter}}" GroupName="IsSelectedGroup">
        </RadioButton>
        </DockPanel>

Now here this cannot be called as a bug, but it’s a feature which blocks developers from adding a binding which they assume to be a one way binding. Those controls which take two-way binding by default will expect developers to explicitly specify Path.

Categories:

2 comments:

  1. Thanks, i didn't know this and just got the aforementioned exception. I am glad i found this post.

    ReplyDelete
  2. muchas gracias por la aportación. Acabas de Salvarme la vida.

    ReplyDelete

Dear reader, Your comment is always appreciated. I will reply to your queries as soon as possible.

1. Make sure to click on the Subscribe By Email link to be notified of follow up comments and replies. Or you can use Subscribe to: Post Comments (Atom) link.
2. Only English comments shall be approved.
3. Please make your comments self-explanatory. Comment in such a way that it explains the comment so that a counter question can be avoided and can be replied with proper answer on the first go.