wpf屏幕右侧的工具栏

时间:2018-04-14 07:50:36

标签: c# wpf windows xaml multi-touch

我正在尝试创建一个WPF应用程序,其中屏幕上有一个可拖动的工具栏,用户可以通过该工具栏选择不同类型的工具并在画布上使用它。也有人可以告诉我如何制作透明画布。一个很好的例子来自this picture in which there is drag able toolbar on right side of the picture. And the user can also work on any window he wants.我是WPF的新手,我现在试图找到解决问题的方法已有一段时间了。有人能引导我朝正确的方向发展......

2 个答案:

答案 0 :(得分:0)

背景DP默认值为null。当Background设置为null时,显示的Color为White,鼠标交互不起作用。您需要将Canvas' s,ListBox&ListBoxItem的背景设置为透明以查看父控件的背景

<Canvas Background="Transparent"/>

答案 1 :(得分:0)

而不是工具栏,将其视为一个窗口 我会看一下avalondock。

透明画布:

<Canvas Background="Transparent"

顺便说一句,这是从wpf初学者级别开始的几个步骤。

如果你看看这个:
https://imgur.com/4n7vH8k

用户正在设计游戏场景。他们将单位从左侧的面板(它是树视图)拖到右侧的画布上。只有这不仅仅是一个普通的画布,它是一个带有画布作为itemspresenter的itemscontrol。这允许我从单元视图模型的集合中模板化单元。它使用的是mvvm模式 如果你没有遇到这种技术,那就有点奇怪了。这里有几个示例,可以查看不同视图模型中的哪些模板到不同的UI对象中。 https://1drv.ms/u/s!AmPvL3r385QhgooJ94uO6PopIDs4lQ https://1drv.ms/u/s!AmPvL3r385QhgooLcGrZOSwFswa-Dg
数据类型用于决定在视图中为viewmodel获取的内容。

您有一点复杂之处在于您决定要在多个窗口中使用可停靠的面板。也许这不是必须的。

在我的应用程序中拖放实际上并不是拖放,而是依赖于画布的奇怪方面。它们不会剪辑,因此您可以在画布上添加一些内容,但将其放在画布上 当您开始拖动单位时,它的viewmodel将添加到绑定到我的单位itemscontrol的集合中。它将它作为一块模板绘制到画布中。我计算出与画布相比的位置,因此它会有一个负X方面,我将其绑定到Canvas.Left。
每个单元都在拇指内。拇指是您在滑块上上下或左右拖动的矩形。它们专为拖动而设计。这样拖动是平滑的,我可以很容易地在被拖动的光标下有一个单元。