Как связать свойство зависимости с чем-либо в XAML - PullRequest
3 голосов
/ 09 июля 2010

(с использованием 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)

Я хочу сделать это в моем TopicListItem.xaml

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

но на самом деле это не работает.

Ответы [ 4 ]

5 голосов
/ 10 июля 2010

Если вам нужно привязать свойство в xaml Usercontrol к свойству, предоставляемому тем же UserControl, используйте следующий шаблон: -

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

Обратите внимание, что это предполагает, что корневому элементу контента внутри UserControl было присвоено имя "LayoutRoot".

5 голосов
/ 09 июля 2010
<UserControl xmlns..... 
    x:Name="myUserControl">

....

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

....

</UserControl>

Вам необходимо установить ElementName равным x: Name of UserControl, если x: Name пустое, определите его.

1 голос
/ 09 июля 2010

Вам нужно использовать Binding, а не TemplateBinding,

Также вы можете посмотреть, как сообщать вам об ошибках привязки - очень полезное поведение по умолчанию в WPF - заставлять вас гадать о проблемах привязки, но вы можете получить много полезной информации, если включите его.

0 голосов
/ 09 июля 2010

вероятно <Textblock Text="{Binding Rank}"/>.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...