在Silverlight中遇到CoverterParameter绑定问题

时间:2010-01-25 18:46:50

标签: .net silverlight xaml binding ivalueconverter

我遇到了xaml解析器不喜欢我的绑定语句的问题,但我看不出该语句有什么问题。

  

属性DataMemberBinding的属性值{Binding VehicleSpeed,ConverterParameter = {Binding InMiles},Converter = {StaticResource SpeedConverter},Mode = TwoWay}无效

VehicleSpeed和InMiles是我在xaml文档的xaml顶级网格的DataContext属性中的类的参数。

这句话过去没有ConverterParameter的工作现在正在抱怨我将第二个绑定添加到我试图传递给ValueConverter的“bool InMiles”。

如果有人发现此行有任何问题,请告诉我。

3 个答案:

答案 0 :(得分:3)

您无法绑定converter参数,因为它不是绑定对象的依赖项属性。

相反,您可以将整个数据项传递给转换器,并在Convert()方法中使用其 VehicleSpeed InMiles 属性。

答案 1 :(得分:1)

我不确定您是否可以将DataBinding用于转换器参数。我认为你需要传入绑定对象并从那里访问属性。

答案 2 :(得分:0)

  

块引用   相反,您可以将整个数据项传递给转换器,并在Convert()方法中使用其VehicleSpeed和InMiles属性。   块引用

是的,它可能是正确的方法,但有时你有没有改变的对象,只有该对象的属性改变了(通过INotifyPropertyChanged)。

所以如果你喜欢这个

<Grid DataContext={Binding Model}>
 <MyControl SomeProperty={Binging, converter={staticResourse ConverterWhichTakesViewModel}/>
</Grid>

模型属性的更改不会对MyControl产生影响,因为模型不会更改。

所以做这样的事情会很好:

<Grid DataContext={Binding Model}>
     <MyControl SomeProperty={Binging Model.MyProperty, converter={staticResourse ConverterWhichTakesViewModel}, ConverterParameter ={Bindging}/>
 </Grid>

但它不起作用......-((。例外:由于对象的当前状态,操作无效

有没有想过这个?