【问题标题】:WPF- remove last empty column of listview gridviewWPF-删除listview gridview的最后一个空列
【发布时间】:2018-06-04 05:35:42
【问题描述】:

我是 WPF 的新手。在 WPF 应用程序中,我使用了 Listview

在下面显示列表视图的快照:-

问题是列表视图(gridview)中网格列标题和垂直滚动条之间的空白

我认为由于网格的最后一个空白列,有什么方法可以删除空白列或任何对齐属性以扩展我的列“设备名称”的宽度

下面是我的 Listview-Gridview 的 XAML

 <ListView x:Name="lstviewDevices"  Height="263"  ScrollViewer.HorizontalScrollBarVisibility="Disabled" HorizontalAlignment="Left" Margin="37,89,0,0" VerticalAlignment="Top" Width="128" SelectionChanged="lstviewDevices_SelectionChanged">
 <ListView.Resources>

             <Style TargetType="{x:Type GridViewColumnHeader}">
                    <Setter Property="HorizontalContentAlignment" Value="Left" />
                    <Setter Property="Background" Value="#adb8ca" />
                    <Setter Property="Foreground" Value="#fff" />
                    <Setter Property="FontSize" Value="15" />
                    <Setter Property="FontFamily" Value="sans-serif" />
                    <Setter Property="FontWeight" Value="SemiBold" />

                    <!--<Setter Property="Margin" Value="3,0,-7,1" />-->
                </Style>
                <Style TargetType="{x:Type ListViewItem}">
                    <Setter Property="HorizontalContentAlignment" Value="Left" />
                    <Setter Property="Background" Value="White" />
                    <Setter Property="Foreground" Value="#337ab7" />
                    <Setter Property="FontSize" Value="13" />
                    <Setter Property="FontFamily" Value="Roboto" />

                </Style>
            </ListView.Resources>
            <ListView.View>
                    <GridView>
                    <GridViewColumn   Header="Device Name" Width="Auto"  DisplayMemberBinding="{Binding DeviceName}"/>
                </GridView>
            </ListView.View>


        </ListView>

是否有相同的输入?

提前致谢

【问题讨论】:

  • 尝试在 GridViewColumn 上使用 Width="*"
  • 它显示编译时错误:-“无法转换'*”

标签: wpf xaml listview


【解决方案1】:

您可以使用网格来定义列宽,然后将网格视图与网格绑定。

<Grid Grid.Row="1">
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="*"/>
                        <ColumnDefinition Width="*"/>
                    </Grid.ColumnDefinitions>

                    <Grid Grid.Column="0" x:Name="col1"/>
                    <Grid Grid.Column="1" x:Name="col2"/>
                </Grid>
                <ListView Grid.Row="1">
                    <ListView.View>
                        <GridView>
                            <GridView.Columns>
                                <GridViewColumn Header="col1Header" Width="{Binding ElementName=col1, Path=ActualWidth}">
                                    <GridViewColumn.CellTemplate>
                                        <DataTemplate>
                                            <TextBlock Text="{Binding}"/>
                                        </DataTemplate>
                                    </GridViewColumn.CellTemplate>
                                </GridViewColumn>
                                <GridViewColumn Header="col2Header" Width="{Binding ElementName=col2, Path=ActualWidth}">
                                    <GridViewColumn.CellTemplate>
                                        <DataTemplate>
                                            <TextBlock Text="{Binding}"/>
                                        </DataTemplate>
                                    </GridViewColumn.CellTemplate>
                                </GridViewColumn>
                            </GridView.Columns>
                        </GridView>
                    </ListView.View>
                </ListView>

【讨论】:

    【解决方案2】:

    我已经稍微修改了你的代码..尝试在你的列表视图中设置填充并根据你的要求进行修改

       <ListView x:Name="lstviewDevices" Padding="0,0,-3,0"  Height="263"  ScrollViewer.HorizontalScrollBarVisibility="Disabled" HorizontalAlignment="Left" Margin="37,89,0,0" VerticalAlignment="Top" Width="228" >
                <ListView.Resources>
    
                    <Style TargetType="{x:Type GridViewColumnHeader}">
                        <Setter Property="HorizontalContentAlignment" Value="Left" />
                        <Setter Property="Background" Value="#adb8ca" />
                        <Setter Property="Foreground" Value="#fff" />
                        <Setter Property="FontSize" Value="15" />
                        <Setter Property="FontFamily" Value="sans-serif" />
                        <Setter Property="FontWeight" Value="SemiBold" />
    
                        <!--<Setter Property="Margin" Value="3,0,-7,1" />-->
                    </Style>
                    <Style TargetType="{x:Type ListViewItem}">
                        <Setter Property="HorizontalContentAlignment" Value="Left" />
                        <Setter Property="Background" Value="White" />
                        <Setter Property="Foreground" Value="#337ab7" />
                        <Setter Property="FontSize" Value="13" />
                        <Setter Property="FontFamily" Value="Roboto" />
    
                    </Style>
                </ListView.Resources>
                <ListView.View>
                    <GridView>
                        <GridViewColumn   Header="Device Name" Width="Auto"  DisplayMemberBinding="{Binding DeviceName}"/>
                    </GridView>
                </ListView.View>
    
    
            </ListView>
    

    【讨论】:

    • 谢谢。我现在使用填充列表视图并将宽度设置为我的网格视图列它看起来不错
    • 欢迎..!!!很高兴为您提供帮助..如果满足您的要求,请接受答案..
    猜你喜欢
    • 2010-10-29
    • 2010-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多