WPF材料设计ListView问题

时间:2018-09-24 09:35:20

标签: wpf xaml listview data-binding material-design

我在我的项目中使用了材质设计...问题是材质设计的默认主题ListView是透明的,我不能仅通过将属性背景更改为color来更改背景颜色...所以我向listview,所以我覆盖了主题。问题是我的默认材质设计listview中的数据绑定正常工作,但是当我向列表视图中添加样式时数据绑定无法正常工作,并向我显示列表中的对象名称。

ListView

<ListView x:Name="lst" HorizontalAlignment="Left" Height="197" Margin="335,165,0,0" VerticalAlignment="Top" Width="259" RenderTransformOrigin="0.5,0.5">

            <ListView.Style>
                <Style TargetType="{x:Type ListView}">
                    <Setter Property="Background" Value="White"/>
                </Style>
            </ListView.Style>

            <ListView.View>
                <GridView>
                    <GridViewColumn Header="#" Width="50" DisplayMemberBinding="{Binding id}"/>
                    <GridViewColumn Header="data" Width="200" DisplayMemberBinding="{Binding data}"/>
                </GridView>
            </ListView.View>
        </ListView>

即使我尝试了Material Design In XAML override style not working也得到了相同的结果。

当没有将材料设计添加到项目中时,上面的listview xaml可以正常工作。所以我很困惑……是材料设计中的任何错误或问题,还是我需要尝试其他方式进行绑定(请注意:我也尝试了通过items.resource和datacontext进行绑定)

1 个答案:

答案 0 :(得分:1)

如果要将Background应用于透明的ListView,则可以将其放在Panel中:

<Grid Background="White">
    <ListView x:Name="lst" HorizontalAlignment="Left" Height="197" Margin="335,165,0,0" VerticalAlignment="Top" Width="259" RenderTransformOrigin="0.5,0.5">
        <ListView.View>
            <GridView>
                <GridViewColumn Header="#" Width="50" DisplayMemberBinding="{Binding id}"/>
                <GridViewColumn Header="data" Width="200" DisplayMemberBinding="{Binding data}"/>
            </GridView>
        </ListView.View>
    </ListView>
</Grid>