【发布时间】:2015-04-22 01:25:00
【问题描述】:
我有很多地方使用以下 XAML 代码创建超链接(这样做是为了让我通过 Caliburn Micro 进行的基于约定的绑定与控件同名的事件挂钩):
<Button Style="{StaticResource HyperlinkButton}" x:Name="AddFile">
<TextBlock>
<Hyperlink>Add file</Hyperlink>
</TextBlock>
</Button>
当然,我在每个链接中自定义名称和链接文本。我决定创建一个用户控件来简化这一点。 HyperlinkButton.xaml 文件中的 XAML 如下所示:
<UserControl x:Class="SampleApp.UserControls.HyperlinkButton"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
>
<Button Style="{StaticResource HyperlinkButton}">
<TextBlock>
<Hyperlink>
<TextBlock Text="{Binding Path=LinkText}"/>
</Hyperlink>
</TextBlock>
</Button>
</UserControl>
在我的代码隐藏中,我为 LinkText 创建了一个 DependencyProperty:
public static readonly DependencyProperty LinkTextProperty = DependencyProperty.Register("LinkText",
typeof(string),
typeof(HyperlinkButton),
new UIPropertyMetadata("Fill in LinkText", new PropertyChangedCallback(OnLinkTextChanged), new CoerceValueCallback(OnCoerceLinkText)));
public string LinkText
{
get { return (string)GetValue(LinkTextProperty); }
set { SetValue(LinkTextProperty, value); }
}
最后,我尝试在另一个文件中使用该控件:
<uc:HyperlinkButton LinkText="Add File" x:Name="AddFile"/>
屏幕上实际上没有出现任何内容(嗯,除了我期望链接的空白处)。
我在哪里做错了?
【问题讨论】:
标签: c# wpf xaml wpf-controls