как создать закрепляемую (плавающую) панель инструментов в wpf - PullRequest
2 голосов
/ 22 мая 2010

Я новичок в wpf.Я должен создать плавающий ToolBar в wpf, как панель инструментов MS - Office 2003.Так что я могу разместить его в любом месте сверху вниз, слева направо так же, как это было в офисе 2003 года.

Пожалуйста, помогите мне .......................

Ответы [ 3 ]

11 голосов
/ 22 мая 2010

Для простой стыковки вы должны использовать 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>

Вместо кнопки вы, конечно, будете использовать классы, более подходящие для ваших нужд.

Однако, когда вам нужна система управления окнами с плавающими окнами, вам придется вернуться в стороннюю библиотеку, потому что в WPF ее нет, и вам будет довольно сложно свернуть свою собственную. Вот несколько библиотек:

Если все, что вам действительно нужно, это плавающая панель инструментов (и никаких других окон), вы можете использовать класс ToolBar в сочетании с классом ToolBarTray . Но вам нужно будет написать код для обнаружения перетаскивания, удалить элемент ToolBar из дерева визуалов, а затем добавить его в качестве корневого визуала в ваш собственный Window или HwndSource. Затем вам нужно будет определить, когда окно находится над зоной перетаскивания, чтобы переместить панель инструментов из окна в визуальное дерево главного окна и закрыть другое окно.

1 голос
/ 22 мая 2010

Я рекомендую вам посмотреть сторонние управляющие библиотеки для этого.Syncfusion - это коммерческий продукт, который содержит компонент менеджера док-станции в своей коллекции необходимых инструментов .Это не совсем как офис 2k3 (больше похоже на Visual Studio).Существует также один в codeplex , и я уверен, что есть несколько других в различных ценовых диапазонах.

Для фактической расстыковки панелей инструментов из основной области панели инструментов, я считаю, стандарт Панель инструментов WPF control уже поддерживает это.По крайней мере, вы можете перемещать их внутри панели инструментов .

0 голосов
/ 01 августа 2013

чтобы создать панель инструментов и добавить к ней кнопки, этот код может вам помочь ...

 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;
}
}
...