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?
因为你不能将除文字之外的任何内容传递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因此您可以使用访问整个事物.
看起来你正试图绑定到ConverterParameter,我担心你不能.ConverterParameter只能采用文字值,例如ConverterParameter ='Your string'
不完全确定我理解你的问题,但我认为你正在寻找与“elementname”的绑定?