MultiBinding的特殊行为VS指定的ImageSource时绑定(Special behav

2019-09-16 12:38发布

绑定到时候我遇到了一个特殊的行为Source的财产Image ,使用转换器。

看来,如果我用一个简单Binding使用IValueConverter返回一个字符串correpsonding向图像的相对路径,一切正常,并显示图像。

在另一方面,如果我使用一个MultiBindingIMultiValueConverter返回相同的字符串,绑定不起作用,并显示在VS2010输出窗口此错误信息:

System.Windows.Data错误:5:由BindingExpression产生值不是有效的目标属性; 值= '' MultiBindingExpression:目标元件是 '图像'(名称= ''); 目标属性是“源”(类型“的ImageSource”)

我发现这个工作,我不能返回一个简单的字符串(和甚至不是一个Uri )。 我不是要建立在我的转换器的ImageSource(一BitmapImage ,其实),并将其返回。

你知道为什么这种奇怪的行为发生? 这之间的已知差异BindingMultiBinding ,或者是一个错误吗?

我发现了另一个计算器话题可能涉及到这一点,在那里阿尔文发布了关于时间的注释时绑定的解决:

我认为MultiBinding作出后TextBlock的渲染,以及(单)绑定之前TextBlok渲染 - Avlin

为了说明这个问题,我写了一个小的项目,你可以下载和测试 。

感谢您的见解!

Answer 1:

我会认为这是由设计,但可以肯定,你需要问的开发者之一,所不同的只是,没有类型转换应用到返回的值MultiBindings ,对人的行程相当频繁。



Answer 2:

我有这个工作为随后(简化代码!)

我的XAML:

 <MediaElement LoadedBehavior="Play" Stretch="UniformToFill"> <MediaElement.Source> <MultiBinding Converter="{StaticResource ActionMedia_Converter}"> <Binding Path="HomeW_Background_FileName" /> <Binding Path="HomeW_Background_FileType" /> </MultiBinding> </MediaElement.Source> </MediaElement> 

我的转换器:

 Public Class ActionMedia_Converter Implements IMultiValueConverter Public Function Convert(values As Object(), TargetType As Type, parameter As Object, culture As CultureInfo) As Object Implements IMultiValueConverter.Convert Dim ImageSource As String ImageSource = String.Concat(values(0), ".", values(1)) Dim MyUri = New System.Uri(ImageSource) Return MyUri End Function Public Function ConvertBack(values As Object, targetTypes As Type(), parameter As Object, culture As CultureInfo) As Object() Implements IMultiValueConverter.ConvertBack Return Binding.DoNothing End Function End Class 



文章来源: Special behavior of MultiBinding vs Binding when specifying an ImageSource