Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 超链接-内容绑定_C#_Wpf_Data Binding_Hyperlink - Fatal编程技术网

C# 超链接-内容绑定

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

我有一个文本框,用户在其中输入uri。这将成为超链接的NavigateUri属性,允许用户单击链接打开页面

<!-- 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>