【发布时间】:2011-08-28 03:00:41
【问题描述】:
我有一个包含几列的 ListView。我将每个 GridViewColumn 绑定到一个属性没有问题,例如:
<ListView ItemsSource="{Binding MyList}">
<ListView.View>
<GridView>
<GridViewColumn DisplayMemberBinding="{Binding Name}">
<GridViewColumnHeader Content="Name"/>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
当我尝试将 GridViewColumn 多重绑定到两个属性时,问题就开始了:
<GridViewColumn>
<GridViewColumn.DisplayMemberBinding>
<MultiBinding Converter="{StaticResource DisplayMemberConverter}">
<Binding Path="HighestScore"/>
<Binding Path="IsHighestScoreApplicable"/>
</MultiBinding>
</GridViewColumn.DisplayMemberBinding>
<GridViewColumnHeader Content"Highest_Score"/>
这里给出了我使用的转换器:
public class DisplayMemberConverter : IMultiValueConverter
{
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
{
int int_value = (int)values[0];
bool bool_value = (bool)values[1];
if (bool_value == true)
return int_value;
return null;
}
...
}
我想达到这样的效果,即当“IsHighestScoreApplicable”属性为假时 - 列表视图上不显示任何内容(空),当它为真时 - 显示 HighestScore 值,但这不起作用 - 所有我即使“IsHighestScoreApplicable”为真,get 也是一个空列。 此外,当我调试 Convert() 方法时,我可以看到 if 语句:
if (bool_value == true)
保持,返回值为 int_value ,但列表视图上仍然没有显示任何内容。
怎么了?
一切顺利, 戴夫
【问题讨论】:
标签: wpf listview multibinding