powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / wpf treeview controlTemplate toggleButton
2 сообщений из 2, страница 1 из 1
wpf treeview controlTemplate toggleButton
    #38803945
Che0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день.
Определил стили для toggleButton в ресурсах и в упор не могу понять как их применить к treeView.
Вижу только общее свойство Style для TreeView.
Но как применить стили к toggleButton внутри TreeView непонятно.
Спасибо.
...
Рейтинг: 0 / 0
wpf treeview controlTemplate toggleButton
    #38804022
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
2 сообщений из 2, страница 1 из 1
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / wpf treeview controlTemplate toggleButton
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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