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
Wpf UniformGrid中按钮的选框/矩形选择_Wpf - Fatal编程技术网

Wpf UniformGrid中按钮的选框/矩形选择

Wpf UniformGrid中按钮的选框/矩形选择,wpf,Wpf,我以编程方式在UniformGrid中生成了按钮,即4行4列,因此有16个按钮 我希望能够单击并拖动创建一个矩形框,以选择一个按钮框 这可能吗 当前正在尝试使用此示例,但未看到拖动框出现 目前,由于都是编程的,XAML中的UniformGrid代码如下: <Canvas DockPanel.Dock="Top" Name="buttonCanvas" Width="800" Height="400">

我以编程方式在UniformGrid中生成了按钮,即4行4列,因此有16个按钮

我希望能够单击并拖动创建一个矩形框,以选择一个按钮框

这可能吗

当前正在尝试使用此示例,但未看到拖动框出现

目前,由于都是编程的,XAML中的UniformGrid代码如下:

                    <Canvas DockPanel.Dock="Top" Name="buttonCanvas" Width="800" Height="400">
                        <Rectangle x:Name="selectionBox" Visibility="Collapsed" Stroke="White" StrokeThickness="4" />
                        <UniformGrid DockPanel.Dock="Top" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" x:Name="uniformGrid" Grid.Row="1" Width="800" Height="400"
                  Rows="{Binding RowNums}"
                  Columns="{Binding ColumnNums}" MouseDown="uniformGrid_MouseDown" MouseUp="uniformGrid_MouseUp" MouseMove="uniformGrid_MouseMove" Background="Transparent">
                        </UniformGrid>
                        <!-- This canvas contains elements that are to be selected -->
                    </Canvas>
首先在UniformGrid上绘制画布:


然后,您可以通过处理画布上的鼠标向下、鼠标移动和鼠标向上事件。在鼠标按下时,您将在画布上添加一个矩形作为当前鼠标位置,在鼠标移动时,您将根据当前鼠标位置调整矩形的大小,并计算出矩形包围的按钮,并将它们设置为通过绑定到某个视图模型来选择。在鼠标向上移动时,将删除矩形。当你选择了

时,你会有某种风格的触发器来设置样式不同。你可以考虑在画布上画一个画布,在画布上画画框,通过处理鼠标下拉、鼠标移动和鼠标拖动事件来绘制画布。在鼠标移动中,您将计算出矩形包围了哪些按钮,并将其设置为选中。您可能会在样式中设置某种触发器,以便在选择时将样式设置为不同的Hi Tim,谢谢-我正在尝试了解如何实现画布。您能提供一个编码示例吗?试一试,看看您能走多远。需要注意的一点是:通过将画布的背景设置为透明,确保画布的背景不为空。使用这里的示例,从我在输出控制台中看到的矩形框的高度和宽度来看,它看起来像是正在创建框。。。我只是没看到。。。我想知道这是否是因为按钮被创建并添加到网格中,而不是画布?我将用一些更新的代码编辑我的问题谢谢Tim-请参阅我所做的编辑。必须使画布和均匀网格的大小相同,否则均匀网格将隐藏h0,w0。但是矩形框仍然没有显示:。@Clemens SO不是一个代码编写服务。最初的问题太宽泛了,我只是给出了一个起点。我本想补充这个答案,因为slickchick2问了其他问题,但不幸的是,我不得不去做其他事情。我已经添加了一些更多的描述,我已经或多或少地评论了第一个Quo Do,如果你允许人们自己解决问题,我认为SLICKIGH2在这个情况下是不必要的。问题被修改了,我给出了一个初始指针,让slickchick2走上他们的道路,现在我添加了一些可能对某人有用的进一步细节。@slickchick2如果您在这方面仍然需要帮助,特别是关于如何计算矩形中的按钮,请尝试编写一些代码并提出一个新问题。
<Grid>
    <UniformGrid>
        <Button/>
        ...etc....
    </UniformGrid>
    <Canvas/>
<Grid>