如何将依赖属性绑定到XAML中的任何内容

Jer*_*hof 3 c# silverlight silverlight-4.0

(使用Silverlight 4.0和VS 2010)
所以我创建了一个Rank在我的C#文件中调用的属性.我现在如何将它绑定到UserControl xaml文件中的控件?

我的代码:(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)
Run Code Online (Sandbox Code Playgroud)

我想在我的TopicListItem.xaml中执行此操作

...
<Textblock Text="{TemplateBinding Rank}"/>
...
Run Code Online (Sandbox Code Playgroud)

但这并没有真正起作用.

Aka*_*ava 5

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

....

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

....

</UserControl>
Run Code Online (Sandbox Code Playgroud)

您需要将ElementName设置为x:UserControl的名称,如果x:Name为空,则定义一个.


Ant*_*nes 5

如果需要将Usercontrol的xaml中的属性绑定到由同一UserControl公开的属性,请使用以下模式: -

<TextBlock Text="{Binding Parent.Rank, ElementName=LayoutRoot}" />
Run Code Online (Sandbox Code Playgroud)

请注意,这假设UserControl中的根内容元素已被赋予名称"LayoutRoot".