Если вы делаете пользовательский элемент управления, это работает отлично.Пользовательский элемент управления наследуется от Control .Ваш класс унаследован от Page .
Я пробовал его со следующим кодом:
using System.Windows;
using System.Windows.Controls;
namespace WpfCustomControlLibrary1
{
public class InputValuePage : Control
{
public static readonly DependencyProperty InputTitleProperty =
DependencyProperty.Register ("InputTitle", typeof (string), typeof (InputValuePage));
public string InputTitle
{
get { return (string)GetValue (InputTitleProperty); }
set { SetValue (InputTitleProperty, value); }
}
static InputValuePage ( )
{
DefaultStyleKeyProperty.OverrideMetadata (typeof (InputValuePage), new FrameworkPropertyMetadata (typeof (InputValuePage)));
}
}
}
Это ControlTemplate в моем файле Generic.xaml.Обратите внимание, что вы можете использовать TemplateBinding для доступа к свойству в шаблоне.
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:WpfCustomControlLibrary1">
<Style TargetType="{x:Type local:InputValuePage}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type local:InputValuePage}">
<Border Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}">
<TextBlock VerticalAlignment="Center" HorizontalAlignment="Center" FontSize="20" Text="{TemplateBinding InputTitle}"/>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ResourceDictionary>
Visual Studio автоматически генерирует ControlTemplate при создании проекта настраиваемого элемента управления.
В моем тестовом проекте я подключилсвойство InputTitle вплоть до содержимого TextBox.
<Window x:Class="WpfApp1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WpfApp1"
mc:Ignorable="d"
xmlns:cc="clr-namespace:WpfCustomControlLibrary1;assembly=WpfCustomControlLibrary1"
Title="MainWindow" Height="200" Width="200">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<TextBox Grid.Row="0" x:Name="TitleBox" Text="ABC"/>
<Frame Grid.Row="1" x:Name="DisFrame">
<Frame.Content>
<cc:InputValuePage InputTitle="{Binding ElementName=TitleBox, Path=Text}"/>
</Frame.Content>
</Frame>
</Grid>
</Window>
Я вполне уверен, что это также будет работать с UserControl, если вам это будет проще.
Очевидно, что это делаетне работает со страницей.