Приложение C # и UserControl
Элементом управления является StackPanel, содержащая TextBox. Довольно тривиально, но я учел другие детали из фактического контроля, чтобы сосредоточиться на проблеме.
Существует одно свойство элемента управления Text, которое устанавливает свойство Text элемента TextBlock.
Элемент управления ведет себя, как и ожидалось, при запуске приложения. Свойство Text экземпляра элемента управления на странице XAML в тестовом приложении установлено правильно, как указано на странице XAML.
Но при разработке страницы в Visual Studio свойство Text, заданное на вкладке XAML, не отображается на вкладке "Дизайн".
UserControl XAML:
<UserControl
x:Name="customTextBlock"
x:Class="MyToolkit.CustomTextBlock"
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"
mc:Ignorable="d"
d:DesignHeight="30"
d:DesignWidth="340">
<StackPanel x:Name="spStackPanel" Margin="0" Padding="0"
Width="340" Height="30"
VerticalAlignment="Center"
HorizontalAlignment="Center"
>
<TextBlock x:Name="tbTextBlock" Text="{Binding ElementName=customTextBlock, Path=Text,Mode=OneWay}"
Height="30" Margin="0,4,0,0" Padding="0"
VerticalAlignment="Center"
HorizontalAlignment="Center"
TextAlignment="Center" />
</StackPanel>
Codebehind:
namespace MyToolkit
{
public sealed partial class TextBlockWithBgColor : UserControl, INotifyPropertyChanged
{
public TextBlockWithBgColor()
{
this.InitializeComponent();
}
public static readonly DependencyProperty TextProperty =
DependencyProperty.Register("Message", typeof(string), typeof(TextBlock), new PropertyMetadata("Fred", null));
public string Text
{
get { return (string)GetValue(TextProperty); }
set { if (Text != value) { SetValue(TextProperty, value); NotifyPropertyChanged("TextProperty"); } }
}
public event PropertyChangedEventHandler PropertyChanged;
private void NotifyPropertyChanged([CallerMemberName] String propertyName = "")
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
}
}
Значение по умолчанию, Fred, отображается во время разработки:
На странице XAML это отображается как ошибка (Не удалось найти свойство…):
Спасибо за любую помощь в этом.