Вы можете использовать привязку данных только к свойствам, которые поддерживаются DependencyProperty
. Например, если вы посмотрите на документы для TextBlock
, то обнаружите, что свойство Text
имеет соответствующее TextProperty
открытое статическое поле типа DependencyProperty
.
Если вы посмотрите документы для Page
, то обнаружите, что не определено TitleProperty
, поэтому свойство Title
не является свойством зависимости.
Редактировать
Нет способа "переопределить" это, однако вы можете создать вложенное свойство: -
public static class Helper
{
#region public attached string Title
public static string GetTitle(Page element)
{
if (element == null)
{
throw new ArgumentNullException("element");
}
return element.GetValue(TitleProperty) as string;
}
public static void SetTitle(Page element, string value)
{
if (element == null)
{
throw new ArgumentNullException("element");
}
element.SetValue(TitleProperty, value);
}
public static readonly DependencyProperty TitleProperty =
DependencyProperty.RegisterAttached(
"Title",
typeof(string),
typeof(Helper),
new PropertyMetadata(null, OnTitlePropertyChanged));
private static void OnTitlePropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
Page source = d as Page;
source.Title = e.NewValue as string;
}
#endregion public attached string Title
}
Теперь ваша страница xaml может выглядеть примерно так: -
<navigation:Page ...
xmlns:local="clr-namespace:SilverlightApplication1"
local:Helper.Title="{Binding Name}">