You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ListView绑定显示模型而非属性问题(MaterialDesign样式冲突)

问题解决:ListView继承MaterialDesign样式后显示对象而非属性

问题原因

直接继承MaterialDesignListBoxItem样式会覆盖ListViewItem默认的模板,导致GridView的列绑定失效,ListView转而显示模型对象的ToString()结果。另外你的XAML代码里TargetType属性存在语法错误,正确写法应为TargetType="{x:Type ListViewItem}"。

解决方案

方案1:使用MaterialDesign专门的ListViewItem样式

如果MaterialDesign提供了MaterialDesignListViewItem静态资源(多数版本都包含),直接继承这个样式即可,它是为ListViewItem适配的:

<ListView ItemsSource="{Binding LinkedProject.LinkedAutomateListVM.Automates}" Margin="8">                      
    <ListView.ItemContainerStyle>
        <Style BasedOn="{StaticResource MaterialDesignListViewItem}" TargetType="{x:Type ListViewItem}">
              <Setter Property="IsSelected" Value="{Binding IsSelected, Mode=TwoWay}"/>
        </Style>
    </ListView.ItemContainerStyle>

    <ListView.View>
        <GridView>
           <GridViewColumn
                DisplayMemberBinding="{Binding Designation}" Header="Designation" />
           <GridViewColumn
                DisplayMemberBinding="{Binding IpAddress}" Header="IP Address" />
        </GridView>
    </ListView.View>
</ListView>

方案2:基于默认ListViewItem样式扩展MaterialDesign效果

如果没有专门的ListViewItem样式,可继承默认ListViewItem样式,手动添加MaterialDesign的视觉属性:

<ListView ItemsSource="{Binding LinkedProject.LinkedAutomateListVM.Automates}" Margin="8">                      
    <ListView.ItemContainerStyle>
        <Style BasedOn="{StaticResource {x:Type ListViewItem}}" TargetType="{x:Type ListViewItem}">
              <Setter Property="IsSelected" Value="{Binding IsSelected, Mode=TwoWay}"/>
              <!-- MaterialDesign基础样式属性 -->
              <Setter Property="Foreground" Value="{DynamicResource MaterialDesignBody}"/>
              <Setter Property="Background" Value="Transparent"/>
              <Setter Property="Padding" Value="8,4"/>
              <Setter Property="BorderThickness" Value="0"/>
              <!-- 选中状态样式 -->
              <Style.Triggers>
                  <Trigger Property="IsSelected" Value="True">
                      <Setter Property="Background" Value="{DynamicResource MaterialDesignSelection}"/>
                      <Setter Property="Foreground" Value="{DynamicResource MaterialDesignSelectionForeground}"/>
                  </Trigger>
              </Style.Triggers>
        </Style>
    </ListView.ItemContainerStyle>

    <ListView.View>
        <GridView>
           <GridViewColumn
                DisplayMemberBinding="{Binding Designation}" Header="Designation" />
           <GridViewColumn
                DisplayMemberBinding="{Binding IpAddress}" Header="IP Address" />
        </GridView>
    </ListView.View>
</ListView>

内容的提问来源于stack exchange,提问作者AsLose

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 10:28:21