2011-12-20 6 views
3

편집 : 파벨은 VisualBrush의 잘못이 아닐 수도 있으므로 특정 문제에 대한 질문의 이름을 변경했습니다.Datagrid 열 끌기 표시기가 잘립니다.

이 예제는 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에 함께 할 수있는 뭔가가 있어야합니다. 그리드에 아이템 소스를 지정하고 열이 반쯤 보이게 될 때까지 오른쪽으로 스크롤하여 드래그하십시오. 빌라! –

+0

스택 패널을 사용하면 내용이 잘리지 않습니다 –

+0

@AdamMills 답변을 편집했습니다. 미안, 너를 도울 수 없어. –