2009-06-12 12 views
1

TreeView(WPF FrameworkのSystem.Windows.Controls.TreeView)を継承するコントロールがあり、ツリーの隣に列を表示するためにGridViewColumnCollectionが実装されています。しかし今私はAllowColumnReorderを実装する必要があります。ユーザーが列の順序を変更しないようにするにはどうしたらいいですか?ここでTreeViewのためのコードは次のとおりです。AllowColumnReorderの実装

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 
    } 

ありがとうございました!

答えて

1

解決策が見つかりました。これは、クラスの実装では、正確ではないのですが、方法でGridViewHeaderRowPresenter.AllowsColumnReorderとXAMLに提示されている:

<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

列の並べ替えを可能にするかどうかの決意が実際にある制御によってなされるべきです列データを表示する。たとえば、GridViewを使用してGridViewColumnCollectionにあるデータを表示する場合、GridViewのAllowSortingプロパティをAllowColumnReorderプロパティの値に設定するとします。

+0

ええ、今のところ私は実際のコントロールにプロパティを入れる時間がありません。私は後でそれをやろうと計画しています。ありがとう。 – Carlo