Гость
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / WPF ToolBar ControlTemplate c кнопками и их события. / 9 сообщений из 9, страница 1 из 1
04.03.2015, 18:57
    #38895034
Fantastick
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WPF ToolBar ControlTemplate c кнопками и их события.
Вечер добрый, господа.

Не могли Вы подсказать мне решение моей проблемы:
Есть control template на ToolBar:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
<ResourceDictionary x:Class="RDToolBarMain"
                    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                    >
    <Style x:Key="MainToolBarStyle" TargetType="ToolBar" >
        <Setter Property="SnapsToDevicePixels" Value="true" />
        <Setter Property="OverridesDefaultStyle" Value="False" />
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type ToolBar}" >
                    <ToolBar x:Name="toolBar" HorizontalAlignment="Stretch" VerticalAlignment="Top" >
                        <Button x:Name="btnAdd" Content="Добавить" Height="30" VerticalAlignment="Top" />
                        <Button x:Name="btnDel" Content="Удалить" Height="30" VerticalAlignment="Top" />
                        <Button x:Name="btnEdit" Content="Редактировать" Height="30" VerticalAlignment="Top" />
                    </ToolBar>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
    </ResourceDictionary>



Так же есть окно, в котором этот темлейт подключается:
Соответственно мусор пропущен...
Код: xml
1.
2.
3.
<Window>
<ToolBar x:Name="toolBar" Style="{StaticResource MainToolBarStyle}" Grid.Row="0" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"  />
</Window>



Так вот как мне привязать событие клик к моей кнопке btnAdd, чтобы я мог сделать его реализацию в моей форме?
...
Рейтинг: 0 / 0
05.03.2015, 10:22
    #38895553
Roman Mejtes
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WPF ToolBar ControlTemplate c кнопками и их события.
Fantastick,

вы неправильно поняли, что такое шаблон, а что такое контент.
В шаблоне не должен содержаться контент, в шаблоне описывается внешний вид контрола
вот банальный пример, который был написан за пару минуток, внешний вид определяйте сами.
в шаблон ToolBar входят 2 обязательных элемента: PART_ToolBarPanel и PART_ToolBarOverflowPanel
их можно посмотреть в MSDN или в исходнике контрола.
после того, как вы описали шаблон, вы добавляете содержимое (кнопки) в свойство Content или Children (в зависимости от элемента управления) и получаете профит.
Для кнопок в WPf лучше использовать не события MouseDown и прочие, а команды и маршрутизируемые команды. Это в разы удобнее и правильнее.



Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
<Window x:Class="WpfApplication11.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Window.Resources>
        <Style x:Key="MyToolBarStyle" TargetType="{x:Type ToolBar}">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type ToolBar}">
                        <Border x:Name="ToolBarAdorner" Background="LightGray">
                            <Grid>
                                <Grid.ColumnDefinitions>
                                    <ColumnDefinition Width="*"/>
                                    <ColumnDefinition Width="Auto"/>
                                </Grid.ColumnDefinitions>
                                <ToolBarPanel x:Name="PART_ToolBarPanel" Grid.Column="0" IsItemsHost="True"/>
                                <ToolBarOverflowPanel x:Name="PART_ToolBarOverflowPanel" Grid.Column="1" Background="Aqua" Width="10"/>
                            </Grid>
                        </Border>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </Window.Resources>
    <DockPanel>
        <ToolBar Style="{StaticResource MyToolBarStyle}"
                 DockPanel.Dock="Top" VerticalAlignment="Top"
                 HorizontalAlignment="Stretch">
            <Button Content="1" Width="24" Height="24"/>
            <Button Content="1" Width="24" Height="24"/>
            <Button Content="1" Width="24" Height="24"/>
            <Button Content="1" Width="24" Height="24"/>
            <Button Content="1" Width="24" Height="24"/>
            <Button Content="1" Width="24" Height="24"/>
            <Button Content="1" Width="24" Height="24"/>
            <Button Content="1" Width="24" Height="24"/>
            <Button Content="1" Width="24" Height="24"/>
            <Button Content="1" Width="24" Height="24"/>
            <Button Content="1" Width="24" Height="24"/>
            <Button Content="1" Width="24" Height="24"/>
            <Button Content="1" Width="24" Height="24"/>
            <Button Content="1" Width="24" Height="24"/>
            <Button Content="1" Width="24" Height="24"/>
            <Button Content="1" Width="24" Height="24"/>
            <Button Content="1" Width="24" Height="24"/>
            <Button Content="1" Width="24" Height="24"/>
            <Button Content="1" Width="24" Height="24"/>
            <Button Content="1" Width="24" Height="24" Background="Red"/>
        </ToolBar>
    </DockPanel>
</Window>
...
Рейтинг: 0 / 0
05.03.2015, 12:49
    #38895824
Fantastick
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WPF ToolBar ControlTemplate c кнопками и их события.
Roman Mejtes, спасибо.
Может быть мне шире описать задачу.
Например, мне нужен ToolBar с 3 кнопками, добавить, удалить, редактировать, возможно потом понадобиться его расширить.
Есть к примеру 3 формы, где я хочу использовать такой тулбар, например сотрудники, отделы, заказы.
При нажатии на кнопку добавить я хочу открывать пустую карточку для заведения новой сущности в зависимости от моего справочника.

Как я это делал в Winforms, делал базовый класс с таким toolbar описывал виртуальные методы - добавить, удалить, редактировать, и в наследники переопределял эти методы.
...
Рейтинг: 0 / 0
05.03.2015, 13:13
    #38895863
Roman Mejtes
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WPF ToolBar ControlTemplate c кнопками и их события.
Fantastick,

есть несколько путей:
а) Создаем UserControl, переопределить его в ToolBar, добавляет в ToolBar 3 кнопки
в) создать в ресурсах контрол, указать параметр x:Shared = "False" и использовать в 3 разных местах

для кнопок нужно задать маршрутизируемые команды, например, 1 команда "AddRoutedCommand", при её нажатии, из кнопки будет вызвано всплывающее событие. Всплывает око к корню визуального дерева, а значит, в окне в CommandBinding мы можем его перехватить и обработать.

Если команда не привязана к какому то контексту, а просто выполняет какое то действие над объектом, то можно просто разместить такую команду в ресурсах и задать её кнопке. Или использовать связывание с модель представления.
...
Рейтинг: 0 / 0
05.03.2015, 15:20
    #38896137
Fantastick
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WPF ToolBar ControlTemplate c кнопками и их события.
Roman Mejtes, спасибо еще раз.

Ух, wpf зло. Простое делает сложным. Сложное простым.
...
Рейтинг: 0 / 0
05.03.2015, 21:37
    #38896621
Roman Mejtes
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WPF ToolBar ControlTemplate c кнопками и их события.
Fantastick,

это только кажется, если делать всё правильно, всё становится простым )
...
Рейтинг: 0 / 0
06.03.2015, 03:58
    #38896727
Малыхин Сергей
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WPF ToolBar ControlTemplate c кнопками и их события.
Roman MejtesFantastick,

это только кажется, если делать всё правильно, всё становится простым )

это только кажется что это это только кажется =).
мое скромное мнение в том что на самом деле до глупого сложная штука пытается спрятаться за простыми вещами.
...
Рейтинг: 0 / 0
06.03.2015, 06:17
    #38896742
Сон Веры Павловны
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WPF ToolBar ControlTemplate c кнопками и их события.
Малыхин Сергеймое скромное мнение в том что на самом деле до глупого сложная штука пытается спрятаться за простыми вещами.
А ваше скромное мнение основывается на сколь-нибудь состоявшемся опыте работы с WPF?
...
Рейтинг: 0 / 0
06.03.2015, 09:31
    #38896839
Roman Mejtes
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WPF ToolBar ControlTemplate c кнопками и их события.
Сон Веры ПавловныМалыхин Сергеймое скромное мнение в том что на самом деле до глупого сложная штука пытается спрятаться за простыми вещами.
А ваше скромное мнение основывается на сколь-нибудь состоявшемся опыте работы с WPF?
кстати сложнее всего приходится тем, кто переходит с WF на WPF (лично моё наблюдение, на этом форуме и на личном опыте)
так как приходится ломать себе мозг, менять парадигму, шаблоны и так далее :) но это моё имхо.
...
Рейтинг: 0 / 0
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / WPF ToolBar ControlTemplate c кнопками и их события. / 9 сообщений из 9, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]