C# 超链接-内容绑定
我有一个文本框,用户在其中输入uri。这将成为超链接的NavigateUri属性,允许用户单击链接打开页面C# 超链接-内容绑定,c#,wpf,data-binding,hyperlink,C#,Wpf,Data Binding,Hyperlink,我有一个文本框,用户在其中输入uri。这将成为超链接的NavigateUri属性,允许用户单击链接打开页面 <!-- Input TextBox --> <TextBox x:Name="linkBox" Width="175" Text="{Binding Path=DocRef, Mode=TwoWay}" /> <!-- Hyperlink --> <TextBlock> <Hyperlink DataContext="{Bi
<!-- Input TextBox -->
<TextBox x:Name="linkBox" Width="175" Text="{Binding Path=DocRef, Mode=TwoWay}" />
<!-- Hyperlink -->
<TextBlock>
<Hyperlink DataContext="{Binding ElementName=linkBox}" NavigateUri="{Binding
Path=Text}" RequestNavigate="Hyperlink_RequestNavigate">
<TextBlock DataContext="{Binding ElementName=linkBox}"
Text="{Binding Path=Text}" />
</Hyperlink>
</TextBlock>
这适用于在文本框中输入整个(绝对)uri。但是,用户只希望输入Uri的'document.extn'位,并让应用程序预先处理资源的其余部分(即,''位)。如何设置uri的基本部分并附加文档引用(最好是在xaml中)?我遇到了Hyperlink的BaseUri属性,它听起来很完美,但不幸的是它受到了保护,所以这不起作用:
<Hyperlink DataContext="{Binding ElementName=linkBox}"
BaseUri="http://www.example.com/" NavigateUri="{Binding Path=Text}"
RequestNavigate="Hyperlink_RequestNavigate">
有人可以帮忙吗?您可以使用
IValueConverter
接口创建一个自定义转换器,以获取附加的基本uri。您可以使用多绑定
连接所需的两个字符串
<Hyperlink DataContext="{Binding ElementName=linkBox}" RequestNavigate="Hyperlink_RequestNavigate">
<Hyperlink.NavigateUri>
<MultiBinding StringFormat="{}{0}{1}">
<Binding FallbackValue="http://www.example.com/" />
<Binding Path="Text" />
</MultiBinding>
</Hyperlink.NavigateUri>
</Hyperlink>