【发布时间】:2015-09-23 09:01:59
【问题描述】:
我正在寻找一种方法,让我的程序的用户通过拖放将按钮(作为背景的图像,并且是 Grid-Children 的内容)移动到另一个 Grid-Children。
我的按钮是由程序本身基于数据库在for-iteration中创建的:
foreach (PC_Infos item in allPcsOnThisFloor)
{
if (item != null)
{
roomToCoordinates(allPcsOnThisFloor[i].Room,out column, out row);
Button btn = new Button();
btn.Name = Name+ "_Button";
btn.Background = new ImageBrush(my icon here);
btn.Click += btn_Click;
btn.SetValue(Grid.ColumnProperty, column);
btn.SetValue(Grid.RowProperty, row);
My_Grid.Children.Add (btn);
i++;
}
else
break;
}
PC_Infos 只是一个持有属性的类:PC_Name、Room 和 MAC_adress,仅此而已。
我的网格:
<Grid x:Name="Grid_10" AllowDrop="True">
<Grid.Background>
<ImageBrush ImageSource="C:\Users\XXX\XXX\buildingPlan.png"/>
</Grid.Background>
<Grid.ColumnDefinitions>
<ColumnDefinition />
[...]
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition />
[...]
<RowDefinition />
</Grid.RowDefinitions>
</Grid>
现在有一种方法可以使用btn.*,它在拖动时获取当前位置(行和列),另一个btn.* 在鼠标当前所在的 Grid-Child 中创建此按钮的新副本当鼠标放下按钮时?
或者有没有办法将按钮从一个孩子“移动”到另一个孩子?
顺便说一句:我的程序应该在实际位置显示带有 PC 作为图标(按钮)的建筑计划。通过阅读我的数据库中的“房间”列,可以通过源代码进行粗略的猜测。但房间不仅仅是一个地方。有人在窗户上工作,另一个人在门口工作,这应该由用户标记(通过拖放) 我在 VS'13 中使用带有 C# 和 .Net 4.5.1 的 WPF 应用程序。
PS:如果有人说:为什么是 Grid 以及为什么是地狱按钮? :D : 当用户点击图标时,会出现一个带有系统值的新窗口,例如 OS、RAM、CPU...。但我对任何实施持开放态度。好久没做编程了,可能不知道最好的方法。
【问题讨论】:
标签: c# wpf button drag-and-drop grid