2011-12-20 9 views
3

編集:パブは、VisualBrushの障害ではない可能性があることを示しているため、特定の問題の名前を変更しました。データグリッドの列のドラッグインジケーターがクリップされます

この例はWPF Datagridです。 列見出しが部分的に表示されるまで右にスクロールします。 部分的に表示されている列ヘッダーをドラッグして並べ替えます。私はColumnReorderingを購読し、私自身の持つドラッグインジケーターを交換
他のソリューションではまだ興味を持って - ドラッグインジケーターは、ヘッダ(完了していない)

マイソリューションの部分図です。 自分のクラスのDataGridColumnFloatingHeaderのソースをコピーします。 ヘッダーの最初の子(クリップされていない)を使用してビジュアルブラシを作成する行に、ビジュアルブラシを作成する行を変更します。 オフセットを削除して0,0を使用します。

答えて

0

編集

私はそれがDataGrid実装のバグだと思っています。あなたが本当にあなたを扱うなら、そのような望ましくない振る舞いを避けるために、列の先頭をスクロールすることをお勧めします。

IMHO問題自体はSystem.Windows.Controls.DataGridColumnFloatingHeaderです。このクラスは内部的なので、問題を回避するのは難しいです。

再現方法:

スクロールビット右、最初の列をドラッグするよりも。

<Window x:Class="WpfApplication2.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="MainWindow" Height="400" Width="300"> 

    <ScrollViewer x:Name="uiScroll"> 
     <DataGrid Grid.Row="3" x:Name="uiGrid"> 
      <DataGrid.Columns> 
       <DataGridTextColumn Width="200" Header="Test 1" Binding="{Binding Key}" /> 
       <DataGridTextColumn Width="200" Header="Test 2" Binding="{Binding Value}" /> 
      </DataGrid.Columns> 
     </DataGrid> 
    </ScrollViewer> 

</Window> 

...

public partial class MainWindow : Window 
{ 
    public MainWindow() 
    { 
     InitializeComponent(); 

     uiGrid.ItemsSource = new Dictionary<string, string>() { { "key1", "val1" }, { "key2", "val2" } }; 
    } 

} 
+0

問題は、ScrollViewerのとは何かを持っている必要があります。グリッドにアイテムソースを与え、列が半分になるまで右にスクロールし、ドラッグします。 Voila! –

+0

あなたはスタックパネルを使用していますが、コンテンツはクリップされません –

+0

@AdamMills私は答えを編集しました。申し訳ありませんが、あなたを助けることはできません。 –

関連する問題