我有这个密码
<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>如何使用<MultiBinding>填充NavigateUri=""
有可能吗?
多亏了@ThomasLevesque!
解决办法:
<Window.Resources>
<c:StringToUriConverter x:Key="stringToUriConverter"/>
</Window.Resources>
<Hyperlink.NavigateUri>
<MultiBinding ConverterParameter="" Converter="{StaticResource uriConverter}">
<Binding Path="Text" ElementName="tbxHostData" />
<Binding Path="Text" ElementName="tbxWebSiteDataName" />
<Binding Path="Text" ElementName="tbxDataServicesName" />
</MultiBinding>
</Hyperlink.NavigateUri>C#
[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();
}
}发布于 2012-01-25 17:16:48
这是可能的,但不能使用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>public class UriConverter : IMultiValueConverter
{
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
{
string uriString = String.Join(string.Empty, values);
return new Uri(uriString);
}
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}https://stackoverflow.com/questions/9006957
复制相似问题