Реализация AllowColumnReorder - PullRequest
1 голос
/ 12 июня 2009

У меня есть элемент управления, который наследуется от TreeView (System.Windows.Controls.TreeView от WPF Framework), и он реализует GridViewColumnCollection для отображения столбцов рядом с деревом. Однако теперь мне нужно реализовать AllowColumnReorder на случай, если мы не хотим, чтобы пользователи переупорядочивали столбцы, как я могу этого добиться? Вот код для TreeView:

    public class TreeListView : TreeView
    {
        protected override DependencyObject GetContainerForItemOverride()
        {
            return new TreeListViewItem();
        }

        protected override bool IsItemItsOwnContainerOverride(object item)
        {
            return item is TreeListViewItem;
        }

        #region Public Properties

        private GridViewColumnCollection _columns;

        public GridViewColumnCollection Columns
        {
            get
            {
                if (_columns == null)
                {
                    _columns = new GridViewColumnCollection();
                }

                return _columns;
            }
        }

        public bool AllowColumnReorder { get; set; }

        #endregion
    }

Спасибо!

Ответы [ 2 ]

1 голос
/ 12 июня 2009

Нашел решение. Это не совсем в реализации класса, но в том виде, как он представлен в XAML с помощью GridViewHeaderRowPresenter.AllowsColumnReorder:

<Style TargetType="{x:Type controls:TreeListView}">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type controls:TreeListView}">
                        <Border BorderBrush="{TemplateBinding BorderBrush}"
                    BorderThickness="{TemplateBinding BorderThickness}">
                            <DockPanel>
                                <GridViewHeaderRowPresenter AllowsColumnReorder="False" Columns="{Binding Path=Columns,RelativeSource={RelativeSource TemplatedParent}}"
                                            DockPanel.Dock="Top"/>
                                <ItemsPresenter/>
                            </DockPanel>
                        </Border>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
0 голосов
/ 13 июня 2009

Определение того, должны ли столбцы разрешать сортировку, должно выполняться элементом управления, который фактически отображает данные столбца. Например, если вы используете GridView для отображения данных, найденных в GridViewColumnCollection, тогда вы должны установить для свойства AllowSorting GridView значение, найденное в вашем свойстве AllowColumnReorder.

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