WPF:为什么以下代码不适用于ListView? [英] WPF: Why following code does not work for ListView?

查看:54
本文介绍了WPF:为什么以下代码不适用于ListView?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我们具有以下链接

到实现ListView,它应该基于该标志来决定显示一个宽列(三列宽度组合)或显示三列.

to implement ListView, it should base on the flag to decide to show one wide columns (three columns width combine) or show three columns.

但是,现在它仅显示collection.item在每个列中的类类型.我们做错了什么?

However, right now it only show the collection.item's class type in each colomn. What we do wrong?

谢谢,简

<UserControl.Resources>  <ResourceDictionary>   <Style TargetType="ListViewItem">   <Style.Triggers>    <DataTrigger Binding="{Binding RelativeSource={RelativeSource Self}, Path=Content.IsSingleStep}" Value="False">      <Setter Property="Template">       <Setter.Value>        <ControlTemplate TargetType="ListViewItem">         <Border BorderThickness="1"             BorderBrush="Pink"             CornerRadius="2">          <Grid>           <Rectangle Name="UpperHighlight" />           <Grid Name="rowdetail">            <Grid.ColumnDefinitions>             <ColumnDefinition Width="{Binding RelativeSource={RelativeSource FindAncestor,AncestorType=ListView}, Path=View.(GridView.Columns)[0].ActualWidth}" />             <ColumnDefinition Width="{Binding RelativeSource={RelativeSource FindAncestor,AncestorType=ListView}, Path=View.(GridView.Columns)[1].ActualWidth}" />             <ColumnDefinition>              <ColumnDefinition.Width>               <MultiBinding Converter="{StaticResource multiConverter}">                <Binding RelativeSource="{RelativeSource FindAncestor, AncestorType=ListView}"                     Path="View.(GridView.Columns)[2].ActualWidth" />                <Binding RelativeSource="{RelativeSource FindAncestor, AncestorType=ListView}"                     Path="View.(GridView.Columns)[3].ActualWidth" />                <Binding RelativeSource="{RelativeSource FindAncestor, AncestorType=ListView}"                     Path="View.(GridView.Columns)[4].ActualWidth" />               </MultiBinding>              </ColumnDefinition.Width>             </ColumnDefinition>            </Grid.ColumnDefinitions>            <TextBlock Text="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Content.StartDateTime, Converter={StaticResource FormatDateTime}}"                  Grid.Column="0" />            <TextBlock Text="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Content.User.Name}"                  Grid.Column="1" />            <TextBlock Text="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Content.ProgramName}"                  Grid.Column="2"                  HorizontalAlignment="Center"/>           </Grid>          </Grid>         </Border>         <!--<ControlTemplate.Triggers>          <Trigger Property="IsSelected"               Value="true">           <Setter TargetName="UpperHighlight"               Property="Fill"               Value="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}" />           <Setter TargetName="rowdetail"               Property="TextBlock.Foreground"               Value="{DynamicResource {x:Static SystemColors.HighlightTextBrushKey}}" />          </Trigger>         </ControlTemplate.Triggers>-->        </ControlTemplate>       </Setter.Value>      </Setter>     </DataTrigger>      </Style.Triggers>     </Style>   </ResourceDictionary>  </UserControl.Resources>

<ListView x:Name="listViewLog"                    IsSynchronizedWithCurrentItem="True"          ItemContainerStyle="{StaticResource ListViewItemStyle}"          ItemsSource="{Binding AllLogs}"          Background="Transparent">      <ListView.View>       <GridView>        <GridViewColumn Width="200"                Header="General_Date" />        <GridViewColumn Width="130"                Header="General_User" />        <GridViewColumn Width="100"                Header="xxx1" />        <GridViewColumn Width="100"                Header="xxx2" />        <GridViewColumn Width="120"                Header="xxx3"</GridView>      </ListView.View>     </ListView>

推荐答案

我认为您的GridViewColumns您需要添加DisplayMemberBinding =""{Binding MyProperty}".例如.

I think on your GridViewColumns you need to add DisplayMemberBinding="{Binding MyProperty}". eg.

 

<GridView>
  <GridViewColumn Width="200" DisplayMemberBinding="{Binding GeneralDate}" Header="General_Date" />

亲切的问候,

马特


这篇关于WPF:为什么以下代码不适用于ListView?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆