2011-12-20 63 views
3

編輯:帕維爾已經表明,它可能不是VisualBrush的錯,所以我已經重新命名了我的具體問題的問題。Datagrid列拖動指標被剪輯

該示例是一個WPF Datagrid; 向右滾動直到列標題部分可見。 拖動部分可見的列標題以對其重新排序。 拖動指標是頭部的局部視圖(未完成)

我的解決方案 - 依然有興趣的其他解決方案
我訂閱ColumnReordering和替換用我自己的拖放指示符。 爲我自己的類複製DataGridColumnFloatingHeader的源代碼。 我使用標題將創建可視化畫筆的行更改爲使用標題的第一個子項(未剪裁)創建視覺畫筆的行 刪除偏移量並使用0,0 ..

回答

0

編輯

我相信這是DataGrid實現中的一個錯誤。我建議你在列開頭滾動,以避免這種不必要的行爲,如果它真的對待你。

恕我直言,問題本身在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中。爲您的網格添加一個itemssource,向右滾動,直到列的一半可見,然後拖動它。瞧! – 2011-12-21 17:48:27

+0

您使用的是一個stackpanel,內容不會被剪切 – 2011-12-21 17:49:54

+0

@AdamMills我編輯了答案。對不起,幫不了你。 – 2011-12-22 07:07:53