Wpf Datagrid列拖动指示器已剪裁
编辑:Pavel已经表明这可能不是VisualBrush的错,所以我为我的具体问题重新命名了这个问题 示例是WPF数据网格; 向右滚动,直到列标题部分可见。 拖动部分可见的列标题以对其重新排序。 拖动指示器是收割台的局部视图(未完成) 我的解决方案-仍对其他解决方案感兴趣Wpf Datagrid列拖动指示器已剪裁,wpf,datagrid,visualbrush,Wpf,Datagrid,Visualbrush,编辑:Pavel已经表明这可能不是VisualBrush的错,所以我为我的具体问题重新命名了这个问题 示例是WPF数据网格; 向右滚动,直到列标题部分可见。 拖动部分可见的列标题以对其重新排序。 拖动指示器是收割台的局部视图(未完成) 我的解决方案-仍对其他解决方案感兴趣 我订阅了ColumnReordering并用我自己的替换了拖动指示器。 正在为我自己的类复制DataGridColumnFloatingHeader的源。 我将使用标题创建视觉画笔的行更改为使用标题的第一个子项(未剪裁)创建
我订阅了ColumnReordering并用我自己的替换了拖动指示器。 正在为我自己的类复制DataGridColumnFloatingHeader的源。 我将使用标题创建视觉画笔的行更改为使用标题的第一个子项(未剪裁)创建视觉画笔的行 删除偏移量并使用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>
公共部分类主窗口:窗口
{
公共主窗口()
{
初始化组件();
uiGrid.ItemsSource=newdictionary(){{“key1”,“val1”},{“key2”,“val2”};
}
}
问题一定与ScrollViewer有关。给你的网格一个itemssource,向右滚动直到一列显示一半,然后拖动它。瞧!如果您使用stackpanel,则不会删除内容,因为我已经用自己的实现(在列重新排序事件上)替换了该内部类,但是我仍然无法使其正常工作。
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
uiGrid.ItemsSource = new Dictionary<string, string>() { { "key1", "val1" }, { "key2", "val2" } };
}
}