WPFwiki, wpf, wiki, .net 3.0, windows presentation foundation, FAQ, free resources, solution, development, microsoft Home of the world's largest WPF FAQ
Edit

Category

Data Binding

Edit

Question

Is there a way around the limitation of a binding target always needing a dependency property?

Edit

Answer

As a rule, to accept a Binding class instance, a property has to be a Dependency Property. For instance, the following declaration is valid because TextBox.Text is a Dependency Property.

<TextBox Name="textBox1"   Text="{Binding Source={...}, Path=...}"/>


On the other hand, if we try to bind the X attribute of a Point to the content of this TextBox, the declaration will be invalid because X is not a dependency property.

<Point X="{Binding ElementName=textBox1, Path=Text, Mode=OneWay}"/>


However, there is indeed a way to bind this TextBox and this Point.X by declaring the Binding the other way around. To put it simply, if you want to perform a binding between a source property and a target property, you can either declare it on the target property (the usual way) or on the source property (the way we explain in this article).

There are a few Outdoor Fountains things to be aware of first:

1- Since the target property is not a DependencyProperty, the source property has to be one. Otherwise, no binding is possible between the two properties. Wpfwiki Halloween Costumes

2- You have to use the binding mode TwoWay or OneWayToSource. Visalia accident lawyer weight loss pills. Otherwise, the conceptual target would not be a target! Here's a graph that explains Spotsylvania DUI Lawyer it more clearly.

Classic OneWay binding                                      Inversed OneWay Binding using the same objects
    Object A (Source)                                           Object A (Target - binding declared here)
       |                                                           |
       | information flow                                          | information flow
       v                                                           v
    Object B (Target - binding declared here)                   Object B (Source)
    Here, Object B is a Target in declaration                   Here, Object B is a Target only conceptually.
    and conceptually.


Here's the example that shows this at work. It shows two TextBox objects providing X and Y values to a Point in Resources. There's also a hyip monitor button that displays breast actives results the current Point's value in a MessageBox.

<Window x:Class="WindowsApplication4.Window1"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="CLR Property As Binding Target Sample"
        Height="300"
        Width="300">
   <Window.Resources>
      <Style x:Key="LabelStyle"
             TargetType="{x:Type TextBlock}">
         <Setter Property="Margin"
                 Value="5,3,0,0"/>
      </Style>
      <Point x:Key="WorkingPoint"/>
   </Window.Resources>
   <StackPanel>
      <StackPanel Orientation="Horizontal">
         <TextBlock Text="X: "
                    Style="{StaticResource LabelStyle}"/>
         <TextBox Width="50"
                  Text="{Binding Source={StaticResource WorkingPoint}, Path=X}"/>
         <TextBlock Text="Y: "
                    Style="{StaticResource LabelStyle}"/>
         <TextBox Width="50"
                  Text="{Binding Source={StaticResource WorkingPoint}, Path=Y}"/>
      </StackPanel>
      <Button Content="Show Value" Click="ShowValue_Clicked"/>
   </StackPanel>
</Window>


In code behind:

private void ShowValue_Clicked( object sender, RoutedEventArgs e )
{
  MessageBox.Show( this.FindResource( "WorkingPoint" ).ToString(), "Point value" );
}






Edit

Related Links

Wikipedia essay Thyromine pacquiao vs marquez mayweather vs ortiz pacquiao vs marquez live streaming hopkins vs dawson live streaming pacquiao vs marquez tickets outdoor lighting pellet stoves Venapro reverse phone lookup outdoor security lighting used pellet stoves outdoor flood lights discount pellet stoves hopkins vs dawson donaire vs narvaez cotto vs margarito st-pierre vs diaz best weight loss Buy Lipitor Online [ Buy Lanoxin Online pacquiao vs marquez Buy Generic Zoloft zetaclear review Buy Crestor Online

All content is Copyright ©2007 Xceed Software Inc. unless otherwise indicated. See the Terms of Service. Contributors must read and agree to the Contribution Policy. WPFwiki is brought to you by Xceed, makers of the powerful yet free Xceed DataGrid for WPF.