首页 > 解决方案 > 如何在水平 ListView 中垂直设置元素 - WPF

问题描述

我有这个我无法弄清楚的问题。

我有一个带有成绩的 ListView(特定学生,特定学科)。现在,我有这样的水平 ListView:

<ListView 
x:Name="gradeListView"
ItemsSource="{Binding}"
IsSynchronizedWithCurrentItem="True"
SelectionChanged="gradeListView_SelectionChanged" 
Grid.ColumnSpan="3" 
Grid.Row="2"
Margin="30,153,325,-194" 
>
<ListView.ItemsPanel>
    <ItemsPanelTemplate>
        <StackPanel Background="Transparent" Orientation="Horizontal" />
    </ItemsPanelTemplate>
</ListView.ItemsPanel>
<ListView.View>
    <GridView>
        <GridView.Columns>
            <GridViewColumn DisplayMemberBinding="{Binding Mark}" Header="Ocena" />
            <GridViewColumn>
                <GridViewColumn.CellTemplate>
                    <DataTemplate>
                        <CheckBox Tag="{Binding Id}" IsChecked="{Binding RelativeSource={RelativeSource AncestorType={x:Type ListViewItem}}, Path=IsSelected}" />
                    </DataTemplate>
                </GridViewColumn.CellTemplate>
            </GridViewColumn>
        </GridView.Columns>
    </GridView>
</ListView.View>

这段代码给了我:

在此处输入图像描述

我想要的是:

在此处输入图像描述

我可以以某种方式将此复选框和标记包装到同一列中的垂直堆叠元素中吗?我自己尝试这样做,但失败了。

请理解,这是我的第一个带有自定义控件等的 WPF 项目。:)

预先感谢您的帮助。

标签: wpflistview

解决方案


如果您不想旋转控件(如WPF 水平 DataGrid中),您可以将两列合并到堆栈面板中:

    <ListView.View>
        <GridView>
            <GridView.Columns>
                <GridViewColumn Header="Ocena">
                    <GridViewColumn.CellTemplate>
                        <DataTemplate>
                            <StackPanel>
                                <CheckBox IsChecked="{Binding RelativeSource={RelativeSource AncestorType={x:Type ListViewItem}}, Path=IsSelected}" />
                                <TextBlock Text="{Binding Mark}"/>
                            </StackPanel>
                        </DataTemplate>
                    </GridViewColumn.CellTemplate>
                </GridViewColumn>
            </GridView.Columns>
        </GridView>
    </ListView.View>

推荐阅读