编辑:Pavel已经证明它可能不是VisualBrush的错,所以我已经为我的具体问题重命名了这个问题。
示例是WPF Datagrid; 向右滚动,直到列标题部分可见。 拖动部分可见的列标题以重新排序。 拖动指示器是标题的部分视图(未完成)
我的解决方案 - 仍然对其他解决方案感兴趣
我订阅了ColumnReordering并用我自己的替换拖动指示器。
为我自己的类复制DataGridColumnFloatingHeader的源代码。
我使用标题将创建可视画笔的行更改为使用标题的第一个子项(未剪切)创建可视画笔的行
删除偏移并使用0,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" } };
}
}