2012-03-06 34 views
4

グリッドビューを列ヘッダーをクリックしてソートしています。ただし、グリッドビューにアイテムを追加してスクロール可能になると、最初に列ヘッダーをクリックしてもアイテムは並べ替えられません。代わりに、グリッドビューを上に移動し、使用可能なスペース内のすべてのアイテムを表示しようとします。グリッドビューの列ヘッダーをクリックすると、グリッド全体がウィンドウをカバーしようとします

これを防ぐために設定する必要があるプロパティはありますか?ここでGridViewのためのコードは次のとおりです。

<Window x:Class="AutomatedExitStrategy.Presentation.View.AutomatedExitStrategyShell" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="Automated Exit Strategy System" Height="480" 
    Width="2125"> 

<ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto"> 
    <Grid Opacity="1"> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="0.20*"/> 
     <RowDefinition Height="0.80*"/> 
    </Grid.RowDefinitions> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="1*"/> 
     </Grid.ColumnDefinitions> 
     <ListView 
      Grid.Row="1" 
      Margin="0,2,0,0" 
      IsSynchronizedWithCurrentItem="True" 
      ItemsSource="{Binding GlobalRowsCollection}" 
      AlternationCount="2"> 
      <ListView.View> 
       <GridView> 
        <GridViewColumn 
         Width="25"> 
         <GridViewColumnHeader Command="{Binding SortList}" CommandParameter="IsEnabled"></GridViewColumnHeader> 
         <GridViewColumn.CellTemplate> 
          <DataTemplate> 
           <CheckBox Margin="0" 
              VerticalAlignment="Center" 
              HorizontalAlignment="Left" 
              IsChecked="{Binding IsChecked}"/> 
          </DataTemplate> 
         </GridViewColumn.CellTemplate> 
        </GridViewColumn> 
        <GridViewColumn 
         Width="Auto"> 
         <GridViewColumnHeader Command="{Binding SortList}" CommandParameter="InputViewModel.Group">Grp</GridViewColumnHeader> 
         <GridViewColumn.CellTemplate> 
          <DataTemplate> 
           <Grid> 
            <TextBlock Text="{Binding InputViewModel.Group}" 
               Style="{StaticResource GridBlockStyle}" 
               HorizontalAlignment="Center"/> 
           </Grid> 
          </DataTemplate> 
         </GridViewColumn.CellTemplate> 
        </GridViewColumn> 
       </GridView> 
      </ListView.View> 
     </ListView> 

+0

あなたは(そのようなものが存在する場合)のModelViewコードとウィンドウのコードを提供してもらえそうな問題をテストすることができますか? –

答えて

0

あなたは、リストビューのRequestBringIntoViewイベントをサブスクライブして処理としてマークする必要があります。

これにより、クリックすると、ScrollViewerがスクロールしてListView全体を表示するのを防ぐことができます。その結果、MouseDownイベントが継続して並べ替えをトリガーできるようにする必要があります。

<ListView Grid.Row="1" 
      Margin="0,2,0,0" 
      IsSynchronizedWithCurrentItem="True" 
      ItemsSource="{Binding GlobalRowsCollection}" 
      AlternationCount="2" 
      RequestBringIntoView="ListView_RequestBringIntoView"> 
    ... 
</ListView> 

そして、コードビハインドで...

public void ListView_RequestBringIntoView(object sender, RequestBringIntoViewEventArgs e) 
{ 
    e.Handled = true; 
} 
関連する問題