微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

datagrid – 将字段的值传递给Silverlight ConverterParameter

我正在写我的第一个Silverlight应用程序我有一个datagrid的列有两个标签,对于标签,我正在使用IValueConverter有条件地格式化数据.

标签的“内容”设置为:

Content="{Binding Homescore,Converter={StaticResource fmtshs}}"

Content="{Binding Awayscore,Converter={StaticResource fmtshs}}"

我的IValueConverter的转换方法是这样的:

Public Function Convert(
  ByVal value As Object,ByVal targettype As System.Type,ByVal parameter As Object,ByVal culture As System.Globalization.CultureInfo) As Object 
Implements System.Windows.Data.IValueConverter.Convert

    Dim score As Long = value,other As Long = parameter

    Return If(score < 0,"",If(score - other > 5,(other + 5).ToString,score.ToString)
    )

End Function

所以我想做的是在Homescore的转换器中,我想将Awayscore传递给ConverterParameter,对于Awayscore,我想将Homescore传递给转换器.在任何得分的转换器中,我需要能够知道其他分数的值用于格式化.

但是我无法找出将ConverterParameter绑定到另一个字段的语法.
我尝试过以下操作:

Content="{Binding Homescore,Converter={StaticResource fmtshs},ConverterParameter=Awayscore}"  
Content="{Binding Homescore,ConverterParameter={Awayscore}}"  
Content="{Binding Homescore,ConverterParameter={Binding Awayscore}}"

但没有一个似乎不行.如何将字段值传递给ConverterParameter?

解决方法

由于您不能将任何东西传递给ConverterParameter,所以解决方案是将整个对象传递到转换器中,然后可以从转换器中访问所有的属性.

所以你的代码变成(假设你的对象叫做Match):

Public Function Convert(
  ByVal value As Object,ByVal culture As System.Globalization.CultureInfo) As Object 
Implements System.Windows.Data.IValueConverter.Convert

    Dim match As Match = value

    ' Do stuff with match'

End Function

(由于缺少代码中的细节)

然后你的XAML变成了

Content="{Binding Converter={StaticResource fmtshs}}"

注意当您明显地与转换器绑定时,实际上并非如此.您绑定到数据上下文,而不指定Path,以便您可以访问整个事物.

Source

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐