C# WPF Расширение строки ListView - PullRequest
1 голос
/ 09 апреля 2020

У меня есть ListView, и я хочу, чтобы последний элемент в строке отображался под фактическими элементами строки. Необработанная копия xaml:

<ListView x:Name="ListViewRotations" FontFamily="Consolas" MouseDoubleClick="ListViewRotations_MouseDoubleClick">
        <ListView.ContextMenu>
            <ContextMenu>
                <MenuItem Header="Remove" Click="ContextMenuItemRemoveClicked" />
            </ContextMenu>
        </ListView.ContextMenu>
        <ListView.View>
            <GridView>
                <GridViewColumn Width="120" Header="Max Craftsmanship" DisplayMemberBinding="{Binding RotationInfo.MaxCraftsmanship}" />
                <GridViewColumn Width="120" Header="Min Craftsmanship" DisplayMemberBinding="{Binding RotationInfo.MinCraftsmanship}" />
                <GridViewColumn Width="80" Header="Min Control" DisplayMemberBinding="{Binding RotationInfo.MinControl}" />
                <GridViewColumn Width="50" Header="CP" DisplayMemberBinding="{Binding RotationInfo.CP}" />
                <GridViewColumn Width="130" Header="Score" DisplayMemberBinding="{Binding RotationInfo.Score}" />
                <GridViewColumn Width ="Auto" Header="Rotation Time" DisplayMemberBinding="{Binding RotationInfo.RotationTime}" />
                <GridViewColumn Width ="Auto" Header="Rotation" >
                    <GridViewColumn.CellTemplate>
                        <DataTemplate>
                            <ListBox ItemsSource="{Binding Images}">
                                <ListBox.ItemsPanel>
                                    <ItemsPanelTemplate>
                                        <StackPanel Orientation="Horizontal" />
                                    </ItemsPanelTemplate>
                                </ListBox.ItemsPanel>
                                <ListBox.ItemContainerStyle>
                                    <Style TargetType="ListBoxItem">
                                        <Setter Property="BorderThickness" Value="1"/>
                                        <Setter Property="Margin" Value="0"/>
                                        <Setter Property="Padding" Value="0"/>
                                    </Style>
                                </ListBox.ItemContainerStyle>
                                <ListBox.ItemTemplate>
                                    <DataTemplate DataType="CraftingActionContainer">
                                        <Grid Height="25">
                                            <Image Width="25" Height="25" Source ="{Binding BitmapSource}"  VerticalAlignment="Top" />
                                        </Grid>
                                    </DataTemplate>
                                </ListBox.ItemTemplate>
                            </ListBox>
                        </DataTemplate>
                    </GridViewColumn.CellTemplate>
                </GridViewColumn>
            </GridView>
        </ListView.View>
    </ListView>

Как видите, последний элемент на самом деле является ListBox и, поскольку он довольно длинный, я хочу, чтобы он появлялся в новой строке. До сих пор я думал только о создании 2 типов элементов, один с текстовыми данными, а другой для хранения последнего элемента и использования селектора шаблонов. Может быть, вы знаете о других способах. Заранее спасибо.

Редактировать: Изображения включены.

Текущий результат

Требуемый результат

В общем говоря, возможно ли отделить последний элемент от строки и изменить его так, чтобы он отображался ниже других элементов

1 Ответ

1 голос
/ 09 апреля 2020

Вы можете использовать DataGrid с деталями строки;

<Grid Margin="10">
    <DataGrid Name="dgUsers" AutoGenerateColumns="False">
        <DataGrid.Columns>
            <DataGridTextColumn Header="Name" Binding="{Binding Name}" />
            <DataGridTextColumn Header="Birthday" Binding="{Binding Birthday}" />
        </DataGrid.Columns>
        <DataGrid.RowDetailsTemplate>
            <DataTemplate>
                <TextBlock Text="{Binding Details}" Margin="10" />
            </DataTemplate>
        </DataGrid.RowDetailsTemplate>
    </DataGrid>
</Grid>

Полный учебник вы можете найти здесь: Детали строки

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...