1

用鼠标拖动 GridSplitters 时 - 我的网格中的一些拆分器工作正常,而其他拆分器在我将它们放到新位置之前会跳回原始位置。有时经过多次尝试并稍微拖动它们并快速释放鼠标按钮有助于解除阻止它们,但大多数情况下它不会。有时 - 它们只是在拖动时随机跳到新位置。

所有这一切,只需点击一个分离器并使用键盘 - 没有任何问题。

似乎它可能与使用的分离器数量有关 - 分离器越少,这种情况就越少。

如何使它与许多列一起工作?我的应用程序在可滚动网格中有几十列。我尝试将鼠标输入捕获到分离器,但它不起作用。

这似乎与另一个问题类似,但从未得到回答,我想我添加了更多细节。

<Window
    x:Class="WpfApplication1.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow"
    Height="480"
    Width="800">
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition
                Width="40*" />
            <ColumnDefinition
                Width="40*" />
            <ColumnDefinition
                Width="40*" />
            <ColumnDefinition
                Width="40*" />
            <ColumnDefinition
                Width="40*" />

            <ColumnDefinition
                Width="40*" />
            <ColumnDefinition
                Width="40*" />
            <ColumnDefinition
                Width="40*" />
            <ColumnDefinition
                Width="40*" />
            <ColumnDefinition
                Width="40*" />

            <ColumnDefinition
                Width="40*" />
            <ColumnDefinition
                Width="40*" />
            <ColumnDefinition
                Width="40*" />
            <ColumnDefinition
                Width="40*" />
            <ColumnDefinition
                Width="40*" />

            <ColumnDefinition
                Width="300*" />
        </Grid.ColumnDefinitions>

        <GridSplitter
            Grid.Column="0"
            Width="6"
            HorizontalAlignment="Right"
            VerticalAlignment="Stretch" />
        <GridSplitter
            Grid.Column="1"
            Width="6"
            HorizontalAlignment="Right"
            VerticalAlignment="Stretch" />
        <GridSplitter
            Grid.Column="2"
            Width="6"
            HorizontalAlignment="Right"
            VerticalAlignment="Stretch" />
        <GridSplitter
            Grid.Column="3"
            Width="6"
            HorizontalAlignment="Right"
            VerticalAlignment="Stretch" />
        <GridSplitter
            Grid.Column="4"
            Width="6"
            HorizontalAlignment="Right"
            VerticalAlignment="Stretch" />
        <GridSplitter
            Grid.Column="5"
            Width="6"
            HorizontalAlignment="Right"
            VerticalAlignment="Stretch" />
        <GridSplitter
            Grid.Column="6"
            Width="6"
            HorizontalAlignment="Right"
            VerticalAlignment="Stretch" />
        <GridSplitter
            Grid.Column="7"
            Width="6"
            HorizontalAlignment="Right"
            VerticalAlignment="Stretch" />
        <GridSplitter
            Grid.Column="8"
            Width="6"
            HorizontalAlignment="Right"
            VerticalAlignment="Stretch" />
        <GridSplitter
            Grid.Column="9"
            Width="6"
            HorizontalAlignment="Right"
            VerticalAlignment="Stretch" />
        <GridSplitter
            Grid.Column="10"
            Width="6"
            HorizontalAlignment="Right"
            VerticalAlignment="Stretch" />
        <GridSplitter
            Grid.Column="11"
            Width="6"
            HorizontalAlignment="Right"
            VerticalAlignment="Stretch" />
        <GridSplitter
            Grid.Column="12"
            Width="6"
            HorizontalAlignment="Right"
            VerticalAlignment="Stretch" />
        <GridSplitter
            Grid.Column="13"
            Width="6"
            HorizontalAlignment="Right"
            VerticalAlignment="Stretch" />
        <GridSplitter
            Grid.Column="14"
            Width="6"
            HorizontalAlignment="Right"
            VerticalAlignment="Stretch" />
    </Grid>
</Window>
4

1 回答 1

1

它看起来像 WPF 的一个错误。相同的代码在 Silverlight 中运行良好。切换到设置 Horizo​​ntalAlignment="Stretch" 的 GridSplitter 并将它们放在每隔一列中也不起作用。我想最好的解决方法是推出我自己的 GridSplitter 实现 - 只是一个处理鼠标和键盘事件并更新托管 Grid 属性的自定义控件......

*编辑

我确实推出了自己的实现,它可以在我的博客上找到

于 2011-12-10T22:11:52.230 回答