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)
但这并没有真正起作用.
<UserControl xmlns.....
x:Name="myUserControl">
....
<Textblock Text="{Binding Rank,ElementName=myUserControl}"/>
....
</UserControl>
Run Code Online (Sandbox Code Playgroud)
您需要将ElementName设置为x:UserControl的名称,如果x:Name为空,则定义一个.
如果需要将Usercontrol的xaml中的属性绑定到由同一UserControl公开的属性,请使用以下模式: -
<TextBlock Text="{Binding Parent.Rank, ElementName=LayoutRoot}" />
Run Code Online (Sandbox Code Playgroud)
请注意,这假设UserControl中的根内容元素已被赋予名称"LayoutRoot".