Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# GridSplitter在使用键盘时工作良好,但在使用鼠标时会不断反弹_C#_Wpf_Xaml_Grid_Gridsplitter - Fatal编程技术网

C# GridSplitter在使用键盘时工作良好,但在使用鼠标时会不断反弹

C# GridSplitter在使用键盘时工作良好,但在使用鼠标时会不断反弹,c#,wpf,xaml,grid,gridsplitter,C#,Wpf,Xaml,Grid,Gridsplitter,当用鼠标拖动GridSpliters时-我的网格中的一些拆分器工作正常,而其他拆分器在我可以将它们放到新位置之前跳回原始位置。有时,在多次尝试并拖动鼠标后,快速释放鼠标按钮有助于解除锁定,但大多数情况下并非如此。有时,它们只是在拖动时随机跳转到新位置 所有这些,只要点击一个拆分器并使用键盘-工作没有任何问题 似乎这可能与使用的拆分器的数量有关-拆分器越少,发生的次数就越少 如何使它与许多列一起工作?我的应用程序在一个可滚动的网格中有几十列。我尝试将鼠标输入捕获到拆分器,但没有成功 这似乎是类似的

当用鼠标拖动GridSpliters时-我的网格中的一些拆分器工作正常,而其他拆分器在我可以将它们放到新位置之前跳回原始位置。有时,在多次尝试并拖动鼠标后,快速释放鼠标按钮有助于解除锁定,但大多数情况下并非如此。有时,它们只是在拖动时随机跳转到新位置

所有这些,只要点击一个拆分器并使用键盘-工作没有任何问题

似乎这可能与使用的拆分器的数量有关-拆分器越少,发生的次数就越少

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

这似乎是类似的问题,但它从来没有得到回答,我想我补充了更多的细节

<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>

它看起来像是WPF的一个bug。同样的代码在Silverlight中工作得非常好。切换到设置HorizontalAlignment=“Stretch”的GridSplitter并每隔一列将其放入一列也不起作用。我想最好的解决办法是推出我自己的GridSplitter实现——只是一个自定义控件,用于处理鼠标和键盘事件并更新托管网格的属性

*编辑


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

它看起来像是WPF的一个bug。同样的代码在Silverlight中工作得非常好。切换到设置HorizontalAlignment=“Stretch”的GridSplitter并每隔一列将其放入一列也不起作用。我想最好的解决办法是推出我自己的GridSplitter实现——只是一个自定义控件,用于处理鼠标和键盘事件并更新托管网格的属性

*编辑

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