小编Dav*_*ave的帖子

列表视图中的多绑定

我有一个ListView,有几列.我没有问题将每个GridViewColumn绑定到属性,例如:

<ListView ItemsSource="{Binding MyList}">
    <ListView.View>
        <GridView>
            <GridViewColumn DisplayMemberBinding="{Binding Name}">
                <GridViewColumnHeader Content="Name"/>
            </GridViewColumn>
        </GridView>
   </ListView.View>
</ListView>
Run Code Online (Sandbox Code Playgroud)

当我尝试将GridViewColumn多绑定到两个属性时,问题就出现了:

<GridViewColumn>
    <GridViewColumn.DisplayMemberBinding>
        <MultiBinding Converter="{StaticResource DisplayMemberConverter}">
            <Binding Path="HighestScore"/>
            <Binding Path="IsHighestScoreApplicable"/>
        </MultiBinding>
   </GridViewColumn.DisplayMemberBinding>
   <GridViewColumnHeader Content"Highest_Score"/>
Run Code Online (Sandbox Code Playgroud)

我使用的转换器在这里给出:

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;
    }

   ...    
}
Run Code Online (Sandbox Code Playgroud)

我希望达到这样的效果:当'IsHighestScoreApplicable'属性为false时 - 列表视图中没有显示任何内容(空),并且当它为真时 - 显示HighestScore值,但这不起作用 - 我得到的只是一个即使"IsHighestScoreApplicable"为真,空栏也是如此.此外,当我调试Convert()方法时,我可以看到if语句:

 if (bool_value == true)
Run Code Online (Sandbox Code Playgroud)

保持,返回的值是int_value,但列表视图上仍然没有显示任何内容.

怎么了?

所有最好的,戴夫

wpf listview multibinding

2
推荐指数
1
解决办法
4778
查看次数

标签 统计

listview ×1

multibinding ×1

wpf ×1