WPF ListView с дополнительным столбцом

#wpf #listview #gridview

#wpf #listview #просмотр сетки

Вопрос:

У меня ListView определено следующим образом:

 <ListView Grid.Row="3" 
          ItemsSource="{Binding Items}" HorizontalAlignment="Stretch">
          <ListView.View>
                <GridView AllowsColumnReorder="False">
                     <GridView.Columns>
                          <GridViewColumn Header="Camera" DisplayMemberBinding="{Binding CameraName}" />
                           <GridViewColumn Header="Stato">
                                <GridViewColumn.CellTemplate>
                                    <DataTemplate>
                                        <StackPanel>
                                            <svgc:SvgViewbox x:Name="svgIcon" Height="20"  Width="20" Stretch="Uniform" />
                                            <customUserControl:ExtendedBinding
                                                   Source="{Binding ElementName=svgIcon, Path=Source, Mode=TwoWay}"
                                                   Target="{Binding Path=IsNotConnected, Converter={StaticResource BoolToSvgPathConverter}, Mode=TwoWay}" />
                                        </StackPanel>
                                    </DataTemplate>
                                </GridViewColumn.CellTemplate>
                            </GridViewColumn>
                            <GridViewColumn>
                                <GridViewColumn.CellTemplate>
                                    <DataTemplate>
                                        <Button Content="Retry" Width="46" IsEnabled="{Binding IsNotConnected}" Click="TryReconnection_Onclick"/>
                                    </DataTemplate>
                                </GridViewColumn.CellTemplate>
                            </GridViewColumn>
                        </GridView.Columns>
                    </GridView>
          </ListView.View>
</ListView>
  

Проблема в том, что ListView показанный имеет один дополнительный столбец, и я не могу понять причину этого. У вас есть какие-либо предложения?

Ответ №1:

Подгоните свой столбец к нужному вам размеру с помощью «автоматической» ширины:

   <Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="Auto" />
    </Grid.ColumnDefinitions>
    <ListView Grid.Column="0" ItemsSource="{Binding Items}" HorizontalAlignment="Stretch">
        <ListView.View>
            <GridView AllowsColumnReorder="False">
                <GridView.Columns>
                    <GridViewColumn Header="Camera" DisplayMemberBinding="{Binding CameraName}"  />
                    <GridViewColumn Header="Stato">
                        <GridViewColumn.CellTemplate>
                            <DataTemplate>
                                <StackPanel>

                                </StackPanel>
                            </DataTemplate>
                        </GridViewColumn.CellTemplate>
                    </GridViewColumn>
                    <GridViewColumn>
                        <GridViewColumn.CellTemplate>
                            <DataTemplate>
                                <Button Content="Retry" Width="46"  />
                            </DataTemplate>
                        </GridViewColumn.CellTemplate>
                    </GridViewColumn>
                </GridView.Columns>
            </GridView>
        </ListView.View>
    </ListView>
</Grid>
  

Комментарии:

1. Я добавил Width=»Auto» к каждому столбцу, но ничего не изменилось.

2. Не для каждого столбца, а для всего ListView, как я сделал. Я обновлю ответ.

3. О, спасибо! Я не понимал, что мне нужно было поместить ListView в сетку. Спасибо, это работает!