将字段的值传递给Silverlight ConverterParameter

eid*_*lon 12 datagrid ivalueconverter silverlight-3.0

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

标签的"内容"设置如下:

Content="{Binding HomeScore, Converter={StaticResource fmtshs}}"
Run Code Online (Sandbox Code Playgroud)

和

Content="{Binding AwayScore, Converter={StaticResource fmtshs}}"
Run Code Online (Sandbox Code Playgroud)

我的IValueConverter 的Convert方法是这样的:

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
Run Code Online (Sandbox Code Playgroud)

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

但我无法弄清楚将ConverterParameter绑定到另一个字段的语法.
我尝试过以下方法:

Content="{Binding HomeScore, Converter={StaticResource fmtshs}, ConverterParameter=AwayScore}"  
Content="{Binding HomeScore, Converter={StaticResource fmtshs}, ConverterParameter={AwayScore}}"  
Content="{Binding HomeScore, Converter={StaticResource fmtshs}, ConverterParameter={Binding AwayScore}}"  
Run Code Online (Sandbox Code Playgroud)

但这些似乎都不起作用.如何将字段值传递给ConverterParameter?

Chr*_*isF 7

因为你不能将除文字之外的任何内容传递ConverterParameter给解决方案是将整个对象传递到转换器中,然后你可以从Converter中访问它的所有属性.

所以你的代码变成了(假设你的对象被调用Match):

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 match As Match = value

    ' Do stuff with match'

End Function
Run Code Online (Sandbox Code Playgroud)

(代码中缺少细节的道歉)

然后你的XAML就变成了

Content="{Binding Converter={StaticResource fmtshs}}"
Run Code Online (Sandbox Code Playgroud)

注意虽然您显然直接绑定到转换器,但事实并非如此.您绑定到数据上下文而不指定,Path因此您可以使用访问整个事物.

资源

  • 但问题是,如果对象上的属性更新,那么valueconverter将不会触发 (6认同)

And*_*ffe 6

看起来你正试图绑定到ConverterParameter,我担心你不能.ConverterParameter只能采用文字值,例如ConverterParameter ='Your string'

  • 如果您还没有弄清楚,单引号就是您在问题代码中遗漏的内容. (3认同)

vid*_*oon 0

不完全确定我理解你的问题,但我认为你正在寻找与“elementname”的绑定?

例如: http: //www.wintellect.com/CS/blogs/jprosise/archive/2009/03/27/silverlight-3-s-new-element-data-binding.aspx