Wpf 如何填充<;超链接>;NavigateUri不动产自<;多重绑定>;?

Wpf 如何填充<;超链接>;NavigateUri不动产自<;多重绑定>;?,wpf,xaml,Wpf,Xaml,我有这个密码 <Hyperlink NavigateUri=""> <Run> <Run.Text> <MultiBinding StringFormat="{}{0}{1}{2}"> <Binding Path="Text" ElementName="tbxHostData" /> <Binding Path="Text" ElementNa

我有这个密码

<Hyperlink NavigateUri="">
  <Run>
     <Run.Text>
         <MultiBinding StringFormat="{}{0}{1}{2}">
              <Binding Path="Text" ElementName="tbxHostData" />
              <Binding Path="Text" ElementName="tbxWebSiteDataName" />
              <Binding Path="Text" ElementName="tbxDataServicesName" />
          </MultiBinding>
     </Run.Text>
  </Run>
</Hyperlink>
C#


这是可能的,但不适用于
StringFormat
(它仅适用于
String
类型的属性)。您需要使用转换器

<Hyperlink.NavigateUri>
    <MultiBinding Converter="{StaticResource uriConverter}">
        <Binding Path="Text" ElementName="tbxHostData" />
        <Binding Path="Text" ElementName="tbxWebSiteDataName" />
        <Binding Path="Text" ElementName="tbxDataServicesName" />
    </MultiBinding>
</Hyperlink.NavigateUri>

多值转换器
[ValueConversion(typeof(String), typeof(Uri))]
public class UriConverter : IMultiValueConverter
{
        public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
        {
            Uri result;
            string input = String.Join(string.Empty, values);

            Uri.TryCreate(input,  UriKind.RelativeOrAbsolute, out result);
            return result;
        }

        public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
        {
            throw new NotImplementedException();
        }
}
<Hyperlink.NavigateUri>
    <MultiBinding Converter="{StaticResource uriConverter}">
        <Binding Path="Text" ElementName="tbxHostData" />
        <Binding Path="Text" ElementName="tbxWebSiteDataName" />
        <Binding Path="Text" ElementName="tbxDataServicesName" />
    </MultiBinding>
</Hyperlink.NavigateUri>