我是wpf的新手。我必须像在ms-office 2003工具栏中那样在wpf中创建浮动ToolBar
。
所以我可以把它放在顶部 - 底部,左 - 右,就像2003年那样。
请帮助我.......................
答案 0 :(得分:11)
对于普通对接,您可以使用DockPanel:
<DockPanel>
<Button DockPanel.Dock="Top">This would be a toolbar at the top</Button>
<Butto>This would the main work area</Button>
</DockPanel>
<DockPanel>
<Button DockPanel.Dock="Left">This would be a toolbar at the left</Button>
<Button>This would the main work area</Button>
</DockPanel>
而不是Button,你当然会使用更适合你需要的类。
但是当你需要一个带有浮动窗口的窗口系统时,你将不得不恢复到第三方库,因为WPF没有它,并且很难自己滚动。这是一些库:
如果您真正需要的是停靠浮动工具栏(而不是其他窗口),则可以将ToolBar class与ToolBarTray class结合使用。但是您需要编写代码来检测拖动,从可视树中删除ToolBar元素,然后将其作为根视觉添加到您自己的Window或HwndSource。然后,您需要检测窗口何时位于放置区域以将ToolBar从窗口移动到主窗口的可视树并关闭另一个窗口。
答案 1 :(得分:1)
我建议您查看第三方控件库。 Syncfusion是一种商业产品,其essential tools collection中包含一个停靠管理器组件。它不像办公室2k3(更像是Visual Studio)。还有一个on codeplex,我确信还有其他几个价格范围很广。
对于工具栏从主工具栏区域的实际取消停靠,我相信standard WPF toolbar控件已经支持这一点。至少你可以在toolbar tray内移动它们。
答案 2 :(得分:-3)
创建工具栏并为其添加按钮,此代码可以帮助您...
Toolbar m = new ToolBar();
//创建名称为m
的工具栏//你可以设置更多属性
m.Divider = true;
m.DropDownArrows = true;
m.Size = new System.Drawing.Size(250, 25);
m.Wrappable = true;
ToolBarButton tb1 = new ToolBarButton();
ToolBarButton tb2 = new ToolBarButton();
ToolBarButton tb3 = new ToolBarButton();
tb1.Text = "Admin";
tb2.Text = "Teacher";
tb3.Text = "Student";
m.Buttons.Add(tb1);
m.Buttons.Add(tb2);
m.Buttons.Add(tb3);
Controls.Add(m);
private void m_Clicked(Object sender,
ToolBarButtonClickEventArgs e)
{
switch (m.Buttons.IndexOf(e.Button))
{
case 1:
MessageBox.Show("Admin logged in");
break;
case 2:
MessageBox.Show("Teacher logged");
break;
case 3:MessageBox.Show("Student loged in");
break;
case 4:
this.Close();
break;
}
}