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>