Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to bind a Dependency Property to anything in the XAML

(Using Silverlight 4.0 and VS 2010)
So I have created a property called Rank in my C# file. How do I now tie that to a control in the UserControl xaml file?

My code: (TopicListItem.xaml.cs)

    #region Rank (DependencyProperty)

    /// <summary> 
    /// Rank 
    /// </summary> 
    public int Rank
    {
        get { return (int)GetValue(RankProperty); }
        set { SetValue(RankProperty, value); }
    }
    public static readonly DependencyProperty RankProperty =
        DependencyProperty.Register("Rank", typeof(int), typeof(TopicListItem),
        new PropertyMetadata(0, new PropertyChangedCallback(OnRankChanged)));

    private static void OnRankChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
    {
        ((TopicListItem)d).OnRankChanged(e);
    }

    protected virtual void OnRankChanged(DependencyPropertyChangedEventArgs e)
    {

    }

    #endregion Rank (DependencyProperty)

I want to do this in my TopicListItem.xaml

...
<Textblock Text="{TemplateBinding Rank}"/>
...

but that doesn't really work.

like image 369
JeroenEijkhof Avatar asked Dec 16 '22 23:12

JeroenEijkhof


2 Answers

If you need to bind a property in a Usercontrol's xaml to a property exposed by the same UserControl then use the following pattern:-

<TextBlock Text="{Binding Parent.Rank, ElementName=LayoutRoot}" />

Note that this makes the assumption that root content element inside the UserControl has been given the name "LayoutRoot".

like image 90
AnthonyWJones Avatar answered Dec 24 '22 02:12

AnthonyWJones


<UserControl xmlns..... 
    x:Name="myUserControl">

....

<Textblock Text="{Binding Rank,ElementName=myUserControl}"/>

....

</UserControl>

You need to set ElementName to x:Name of UserControl, if x:Name is empty, define one.

like image 43
Akash Kava Avatar answered Dec 24 '22 00:12

Akash Kava