如何在水平ListView - WPF中垂直设置元素

时间:2018-06-10 10:38:39

标签: wpf listview

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

我有一个带有成绩的ListView(特定学生,特定科目)。 现在,我有像这样的Horizo​​ntal 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>

这段代码告诉我:

enter image description here

我想要的是:

enter image description here

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

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

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

如果您不想旋转控件(如WPF horizontal 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>