使用统一网格作为ItemsPanel列的第一位填充ItemsControl

问题描述 投票:0回答:1

我有24个事物的ObservableCollection。

   private ObservableCollection<Thing> things;
        public ObservableCollection<Thing> Things
        {
            get => things;
            set
            {
                things= value;
                RaisePropertyChanged();
            }
        }

我也有一个选定的事物

   private Thing selectedThing;
        public Thing SelectedThing
        {
            get => selectedThing;
            set
            {
                selectedThing= value;
                RaisePropertyChanged();
            }
        }

我需要在网格中显示这些项目。我正在创建一个按钮网格,每个按钮都有一个命令和一个命令参数,可让我设置从集合中选择的Thing。

我需要首先填充此网格列。即:

enter image description here

在WPF中是否可以使用ItemsControl和Uniform网格来做到这一点?

   <ItemsControl ItemsSource="{Binding Things}" HorizontalAlignment="Center" Margin="20">

            <ItemsControl.ItemsPanel>
                <ItemsPanelTemplate>
                   <UniformGrid Columns="3" Rows="8"  />




                </ItemsPanelTemplate>
            </ItemsControl.ItemsPanel>

            <ItemsControl.ItemTemplate>
                <DataTemplate>



                    <Button Content="{Binding ThingPosition}" 
                        Height="30"
                        Width="80"
                            Margin="3"
                        FontSize="8"
                        Command="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ItemsControl}}, Path=DataContext.SelectThingCommand}" 
                        CommandParameter="{Binding Path=.}"/>



                </DataTemplate>
            </ItemsControl.ItemTemplate>
        </ItemsControl>
c# wpf mvvm itemscontrol
1个回答
0
投票

如果无法对ItemsSource集合中的元素进行简单的重新排序,则以下LayoutTransforms应该可以完成此工作:

© www.soinside.com 2019 - 2024. All rights reserved.