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