Гость
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / wpf treeview controlTemplate toggleButton / 2 сообщений из 2, страница 1 из 1
12.11.2014, 18:04
    #38803945
Che0
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
wpf treeview controlTemplate toggleButton
Добрый день.
Определил стили для toggleButton в ресурсах и в упор не могу понять как их применить к treeView.
Вижу только общее свойство Style для TreeView.
Но как применить стили к toggleButton внутри TreeView непонятно.
Спасибо.
...
Рейтинг: 0 / 0
12.11.2014, 19:07
    #38804022
Roman Mejtes
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
wpf treeview controlTemplate toggleButton
Che0,

у TreeView есть
ItemContainerStyle свойство, задающее стиль элемента TreeViewItem. Если нужно поменять в нём ToggleButton, то в этом стиле нужно переопределить шаблон TreeViewItem, в котором создать кнопку с нужным стилем. и незабыть ItemsPresenter

Код: 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.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
    <Style TargetType="{x:Type TreeView}" x:Key="TreeViewStyle">
        
        <Setter Property="ItemContainerStyle">
            <Setter.Value>
                <Style TargetType="{x:Type TreeViewItem}">
                    <Setter Property="IsExpanded" Value="{Binding IsExpanded, Mode=TwoWay}" />
                    <Setter Property="helper:TreeViewExtensions.IsChecked" Value="{Binding IsChecked, Mode=TwoWay}" />
                    <Setter Property="Template">
                        <Setter.Value>
                            <ControlTemplate TargetType="{x:Type TreeViewItem}">
                                <ControlTemplate.Resources>
                                    <SolidColorBrush x:Key="GlyphBrush" Color="#444" />
                                    <Style x:Key="ExpandCollapseToggleStyle" TargetType="{x:Type ToggleButton}">
                                        <Setter Property="Focusable" Value="False"/>
                                        <Setter Property="Template">
                                            <Setter.Value>
                                                <ControlTemplate TargetType="{x:Type ToggleButton}">
                                                    <Grid Width="15" Height="13" Background="Transparent">
                                                        <Path Grid.Column="0" x:Name="arrow" Data="M 1,1.5 L 4.5,5 L 8,1.5" HorizontalAlignment="Center" SnapsToDevicePixels="false" Stroke="#666" StrokeThickness="2" VerticalAlignment="Center" RenderTransformOrigin="0.5,0.5">
                                                            <Path.RenderTransform>
                                                                <TransformGroup>
                                                                    <RotateTransform x:Name="arrowtransform" Angle="-90"/>
                                                                </TransformGroup>
                                                            </Path.RenderTransform>
                                                        </Path>
                                                    </Grid>
                                                    <ControlTemplate.Triggers>
                                                        <Trigger Property="IsChecked" Value="True">
                                                            <Trigger.EnterActions>
                                                                <BeginStoryboard>
                                                                    <Storyboard TargetName="arrowtransform" TargetProperty="Angle">
                                                                        <DoubleAnimation To="0" Duration="0:0:0.3"/>
                                                                    </Storyboard>
                                                                </BeginStoryboard>
                                                            </Trigger.EnterActions>
                                                            <Trigger.ExitActions>
                                                                <BeginStoryboard>
                                                                    <Storyboard TargetName="arrowtransform" TargetProperty="Angle">
                                                                        <DoubleAnimation To="-90" Duration="0:0:0.3"/>
                                                                    </Storyboard>
                                                                </BeginStoryboard>
                                                            </Trigger.ExitActions>
                                                        </Trigger>
                                                    </ControlTemplate.Triggers>
                                                </ControlTemplate>
                                            </Setter.Value>
                                        </Setter>
                                    </Style>
                                    <Style x:Key="TreeViewItemFocusVisual">
                                        <Setter Property="Control.Template">
                                            <Setter.Value>
                                                <ControlTemplate>
                                                    <Border>
                                                        <Rectangle Margin="0,0,0,0" StrokeThickness="5" Stroke="Black" StrokeDashArray="1 2" Opacity="0"/>
                                                    </Border>
                                                </ControlTemplate>
                                            </Setter.Value>
                                        </Setter>
                                    </Style>
                                    <converters:LeftMarginMultiplierConverter Length="19" x:Key="LengthConverter" />
                                </ControlTemplate.Resources>
                                <StackPanel>
                                    <StackPanel>
                                        <Grid>                                                    
                                            <Border Name="Bd" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" Margin="1"
                                                    BorderThickness="{TemplateBinding BorderThickness}"
                                                    Padding="{TemplateBinding Padding}">
                                            
                                                <Grid Margin="{Binding Converter={StaticResource LengthConverter},RelativeSource={RelativeSource TemplatedParent}}">
                                                    <Grid.ColumnDefinitions>
                                                        <ColumnDefinition Width="19" />
                                                        <ColumnDefinition />
                                                    </Grid.ColumnDefinitions>
                                                    <ToggleButton x:Name="Expander" Style="{StaticResource ExpandCollapseToggleStyle}" 
                                                                  IsChecked="{Binding Path=IsExpanded, RelativeSource={RelativeSource TemplatedParent}}" 
                                                                  ClickMode="Press"
                                                                  Cursor="Arrow"/>

                                                    <ContentPresenter Grid.Column="1" x:Name="PART_Header" ContentSource="Header" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"/>
                                                </Grid>
                                            </Border>
                                            <!--</ToggleButton>-->
                                            <Rectangle x:Name="FocusBorder" StrokeThickness="1" Stroke="Gray" StrokeDashArray="1 2" SnapsToDevicePixels="true" Visibility="Collapsed" Margin="1"/>
                                        </Grid>
                                        <ItemsPresenter x:Name="ItemsHost" />
                                    </StackPanel>
                                </StackPanel>
                                <ControlTemplate.Triggers>
                                    <MultiTrigger>
                                        <MultiTrigger.Conditions>
                                            <Condition Property="helper:TreeViewExtensions.HasCheckedItems" Value="True"/>
                                            <Condition Property="helper:TreeViewExtensions.IsChecked" Value="False"/>
                                        </MultiTrigger.Conditions>
                                        <Setter TargetName="Bd" Property="Background">
                                            <Setter.Value>
                                                <DrawingBrush Viewbox="0,0,1,1" Viewport="0,0,7,7" ViewportUnits="Absolute" TileMode="Tile">
                                                    <DrawingBrush.Drawing>
                                                        <DrawingGroup>
                                                            <GeometryDrawing Geometry="M0,0 L0.5,0 L0,.5 z" Brush="#F8EFCF" />
                                                            <GeometryDrawing Geometry="M0,1 L1,0 L1,.5 L.5,1 z" Brush="#F8EFCF" />
                                                        </DrawingGroup>
                                                    </DrawingBrush.Drawing>
                                                </DrawingBrush>
                                            </Setter.Value>
                                        </Setter>
                                    </MultiTrigger>
                                    <Trigger Property="helper:TreeViewExtensions.IsChecked" Value="True">
                                        <Setter TargetName="Bd" Property="Background" Value="#E3BF40"></Setter>
                                    </Trigger>
                                    <Trigger Property="IsExpanded" Value="false">
                                        <Setter TargetName="ItemsHost" Property="Visibility" Value="Collapsed"/>
                                    </Trigger>
                                    <Trigger Property="HasItems" Value="false">
                                        <Setter TargetName="Expander" Property="Visibility" Value="Hidden"/>
                                    </Trigger>
                                    <MultiTrigger>
                                        <MultiTrigger.Conditions>
                                            <Condition Property="HasHeader" Value="false"/>
                                            <Condition Property="Width" Value="Auto"/>
                                        </MultiTrigger.Conditions>
                                        <Setter TargetName="PART_Header" Property="MinWidth" Value="75"/>
                                    </MultiTrigger>
                                    <MultiTrigger>
                                        <MultiTrigger.Conditions>
                                            <Condition Property="HasHeader" Value="false"/>
                                            <Condition Property="Height" Value="Auto"/>
                                        </MultiTrigger.Conditions>
                                        <Setter TargetName="PART_Header" Property="MinHeight" Value="19"/>
                                    </MultiTrigger>
                                    <Trigger Property="IsSelected" Value="true">
                                        <Setter TargetName="FocusBorder" Property="Visibility" Value="Visible"/>
                                    </Trigger>
                                    <Trigger Property="IsEnabled" Value="false">
                                        <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"/>
                                    </Trigger>
                                </ControlTemplate.Triggers>
                            </ControlTemplate>
                        </Setter.Value>
                    </Setter>
                    <Style.Triggers>
                        <Trigger Property="helper:TreeViewItemMouseOverHelper.IsMouseDirectlyOverItem" Value="True">
                            <Trigger.EnterActions>
                                <BeginStoryboard>
                                    <Storyboard>
                                        <ColorAnimation Storyboard.TargetProperty="Background.(SolidColorBrush.Color)"
                                                                    To="#F8EFCF" Duration="0:0:0.3"/>
                                    </Storyboard>
                                </BeginStoryboard>
                            </Trigger.EnterActions>
                            <Trigger.ExitActions>
                                <BeginStoryboard>
                                    <Storyboard>
                                        <ColorAnimation Storyboard.TargetProperty="Background.(SolidColorBrush.Color)"
                                                                    To="Transparent" Duration="0:0:0.3"/>
                                    </Storyboard>
                                </BeginStoryboard>
                            </Trigger.ExitActions>
                        </Trigger>
                    </Style.Triggers>

                </Style>
            </Setter.Value>
        </Setter>
    </Style>
...
Рейтинг: 0 / 0
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / wpf treeview controlTemplate toggleButton / 2 сообщений из 2, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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