(使用Silverlight 4.0和VS 2010)
所以我在C#文件中创建了一个名为Rank
的属性。我现在如何将它绑定到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)
我想在我的TopicListItem.xaml
中执行此操作...
<Textblock Text="{TemplateBinding Rank}"/>
...
但这确实不起作用。
答案 0 :(得分:5)
<UserControl xmlns.....
x:Name="myUserControl">
....
<Textblock Text="{Binding Rank,ElementName=myUserControl}"/>
....
</UserControl>
你需要将ElementName设置为x:UserControl的名称,如果x:Name为空,则定义一个。
答案 1 :(得分:5)
如果需要将Usercontrol的xaml中的属性绑定到由同一UserControl公开的属性,请使用以下模式: -
<TextBlock Text="{Binding Parent.Rank, ElementName=LayoutRoot}" />
请注意,这假设UserControl中的根内容元素已被赋予名称“LayoutRoot”。
答案 2 :(得分:1)
您需要使用Binding,而不是TemplateBinding,
此外,您可能希望了解如何获取向您报告的绑定错误 - WPF中非常有用的默认行为是让您猜测绑定问题,但如果您打开它,实际上可以获得大量有用的信息。
答案 3 :(得分:-1)
可能是<Textblock Text="{Binding Rank}"/>
。