(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.
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".
<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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With