Я пытаюсь создать пользовательский элемент управления, который будет отображать кнопку гиперссылки с текстом под ссылкой. Идея состоит в том, чтобы срочные сообщения отображались на экране страницы Silverlight. Из того, что я прочитал, я подумал, что должен иметь возможность создать новый элемент управления, а затем создать некоторые свойства зависимости и привязать к ним динамические части компонентов, чтобы позволить мне добавить несколько экземпляров пользовательского элемента управления в свой Проект Silverlight. Вот мой XAML, который определяет элемент управления
<UserControl
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"
x:Class="WhatsNew.UrgentStoryGridControl"
d:DesignWidth="608" d:DesignHeight="65" Background="White">
<UserControl.Resources>
<Style x:Key="WhatsNewTitleStyle" TargetType="HyperlinkButton">
Removed for Brevity
</Style>
</UserControl.Resources>
<Grid x:Name="LayoutRoot" Height="65" Margin="0" VerticalAlignment="Bottom" Background="White">
<StackPanel>
<HyperlinkButton Style="{StaticResource WhatsNewTitleStyle}" Content="{Binding linkText}" HorizontalAlignment="Left" VerticalAlignment="Top" NavigateUri="{Binding linkURI}" Foreground="Red"/>
<TextBlock Style="{StaticResource WhatsNewTextStyle}" Text="{Binding storyText}" Margin="0,13,0,0" d:LayoutOverrides="Height"/>
</StackPanel>
</Grid>
В коде позади я создал три свойства зависимости
Partial Public Class UrgentStoryGridControl
Inherits UserControl
Public Shared linkTextProperty As DependencyProperty = DependencyProperty.Register("linkText", GetType(String), GetType(UrgentStoryGridControl), New PropertyMetadata("Link Text"))
Public Shared linkURIProperty As DependencyProperty = DependencyProperty.Register("linkURI", GetType(String), GetType(UrgentStoryGridControl), New PropertyMetadata("link.html"))
Public Shared storyTextProperty As DependencyProperty = DependencyProperty.Register("storyText", GetType(String), GetType(UrgentStoryGridControl), New PropertyMetadata("Story Text"))
Public Property linkText() As String
Get
Return GetValue(linkTextProperty)
End Get
Set(ByVal value As String)
SetValue(linkTextProperty, value)
End Set
End Property
Public Property linkURI() As String
Get
Return GetValue(linkURIProperty)
End Get
Set(ByVal value As String)
SetValue(linkURIProperty, value)
End Set
End Property
Public Property storyText As String
Get
Return GetValue(storyTextProperty)
End Get
Set(ByVal value As String)
SetValue(storyTextProperty, value)
End Set
End Property
End Class
Когда я размещаю этот элемент управления в своем проекте Silverlight с помощью Expression Blend, я вижу три свойства, перечисленные в разделе «Разное» окна свойств, как и следовало ожидать. Значения из PropertyMetadata заполняются как значения по умолчанию для этих свойств. Вот код из моего проекта Silverlight, где я оставляю значения по умолчанию в одиночку:
<local:UrgentStoryGridControl x:Name="urgentStory" Height="65" />
Вот код, в котором я пытаюсь установить значения на что-то:
<local:UrgentStoryGridControl x:Name="urgentStory" Height="65" linkText="Test Link Text" linkURI="testpage.html" storyText="Sample Story Text" />
В любом случае я пытаюсь использовать элемент управления, при запуске приложения ничего не отображается. Я полагаю, что упускаю что-то маленькое, но, потратив сегодня много времени на изучение этого, я не нашел ничего, что указывало бы на то, что я упускаю или делаю неправильно.