2

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

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

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

该语句过去在没有 ConverterParameter 的情况下工作,现在在将第二个绑定添加到我试图传递给 ValueConverter 的“bool InMiles”后抱怨。

如果有人能看出这条线有什么问题,请告诉我。

4

3 回答 3

3

您不能绑定转换器参数,因为它不是绑定对象的依赖属性。

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

于 2010-01-25T19:30:19.467 回答
1

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

于 2010-01-25T19:31:30.647 回答
0

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

是的,这可能是正确的方法,但有时您有未更改的对象,仅更改了该对象的属性(通过 INotifyPropertyChanged)。

所以如果你这样做

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

Model 属性的改变不会对 MyControl 产生影响,因为 Model 没有改变。

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

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

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

对此有什么想法吗?

于 2012-11-29T19:17:39.753 回答