WPF第三方控件DXperience的dxn:NavBarControl添加样式
来源:互联网 发布:windows 10 修复bcd 编辑:程序博客网 时间:2024/05/21 10:00
把第三方控件DXNavBar修改成这效果
主程序的代码如下:
... ...<dxn:NavBarControl HorizontalAlignment="Stretch" Margin="-1" Name="DXNavBar" DockPanel.Dock="Top" > <dxn:NavBarControl.Resources> <ResourceDictionary Source="StyleFiles/DXNavBarStyle.xaml" /> //引用的样式文件 </dxn:NavBarControl.Resources> <dxn:NavBarGroup Name="SysSaveGroup" ImageSource="/Assets/images/acSysSaveIcon.png"> <dxn:NavBarItem Content="子系统配置" Name="ChildSysConfig" /> <dxn:NavBarItem Content="机构设置" Name="JiGouConfig" /> <dxn:NavBarItem Content="用户管理" Name="UserManager" /> <dxn:NavBarItem Content="功能角色" Name="GNJSe" /> .... </dxn:NavBarGroup> <dxn:NavBarGroup Name="RunCheckGroup" ImageSource="assets/images/acRunCheckIcon.png" /> <dxn:NavBarGroup Name="SpacerDataConfigGroup" ImageSource="assets/images/acSpacerConfigIcon.png" /> <dxn:NavBarGroup Name="DireManagerGroup" ImageSource="assets/images/acDirectoryManagerIcon.png" /> <dxn:NavBarGroup Name="DataDictionaryGroup" ImageSource="assets/images/acDataDictionaryIcon.png" /> <dxn:NavBarGroup Name="ServerConfig" ImageSource="assets/images/acServerConfigIcon.png" /> </dxn:NavBarControl>... ...
<dxn:NavBarGroup Header="阿里巴巴" ImageSource="{图片路径}" />
注:<dxn:NavBarGroup 中的Header与ImageSource属性是跟样式文件中的<DataTemplate x:Key="
{dxnt:CommonElementsThemeKey ResourceKey=HeaderTemplate}"> ... </DataTemplate> 内容有关的
<dxn:NavBarItem Content="巴豆" ImageSource="{Item图片路径}"/>
注:<DataTemplate x:Key="{dxnt:CommonElementsThemeKey ResourceKey=ItemContentTemplate}"> ... </DataTemplate>
控制Item内容,DockingLeftContentMargin文字的位置,DockingLeftImageMargin图片的位置,对应的还有DockingTopContentMargin,
DockingBottomContentMargin, DockingRightContentMargin,其实用一个DockingLeftContentMargin方向就行了。
主程序.CS后台代码如下:
public DXNavBarComp() { InitializeComponent(); DXNavBar.View = new SideBarView(); }
-----------------------------------------------------------
样式文件DXNavBarStyle.xaml代码:
</ResourceDictionary ... > <!-- 设置Header的背景色或图 --> <ControlTemplate x:Key="{dxnt:CommonElementsThemeKey ResourceKey=GroupHeaderTemplate}" TargetType="dxn:NavBarGroupHeader"> <Border x:Name="HeaderBorder" BorderBrush="#FFFFFFFF" BorderThickness="0" Height="37" Width="227"> <Border.Background> <ImageBrush ImageSource="/Assets/images/navBarDefaulted.png" Stretch="Uniform" /> </Border.Background> <dxn:ImageAndTextContentPresenter x:Name="groupHeaderLabel" ImageFallbackSize="100" Content="{Binding}" Style="{DynamicResource {dxnt:NavBarGroupControlThemeKey ResourceKey=HeaderStyle}}" Foreground="{Binding Path=Foreground, RelativeSource={RelativeSource TemplatedParent}}" /> </Border> <ControlTemplate.Triggers> <Trigger Property="IsPressed" Value="True"> <Setter Property="Background" TargetName="HeaderBorder" > <Setter.Value> <ImageBrush ImageSource="/Assets/images/navBarSelected.png" Stretch="Uniform" /> </Setter.Value> </Setter> </Trigger> <Trigger Property="IsMouseOver" Value="True"> <Setter Property="Cursor" Value="Hand" /> <Setter Property="Background" TargetName="HeaderBorder" > <Setter.Value> <ImageBrush ImageSource="/Assets/images/navBarSelected.png" Stretch="Uniform" /> </Setter.Value> </Setter> </Trigger> </ControlTemplate.Triggers> </ControlTemplate> <DataTemplate x:Key="{dxnt:CommonElementsThemeKey ResourceKey=HeaderTemplate}"> <DockPanel Margin="0" > <!-- 设置Header的标题样式,即是设计页中dxn:NavBarGroup的ImageSource --> <Image x:Name="image" Source="{Binding Path=ImageSource}" DockPanel.Dock="Left" Height="37" Width="227"/> <!-- dxn:NavBarGroup里的Header属性跟这个TextBlock捆绑,因为直接用图片,所以注释掉TextBlock --> <!--<TextBlock Text="{Binding Path=Header}" Foreground="Green" VerticalAlignment="Center" Margin="4,0,0,0"/>--> </DockPanel> <DataTemplate.Triggers> <DataTrigger Binding="{Binding Path=ImageSource}" Value="{x:Null}"> <Setter Property="Visibility" Value="Collapsed" TargetName="image"/> </DataTrigger> </DataTemplate.Triggers> </DataTemplate> <!-- DockingLeftContentMargin文字的位置,DockingLeftImageMargin图片的,对应的还有Top,Botton,Right--> <DataTemplate x:Key="{dxnt:CommonElementsThemeKey ResourceKey=ItemContentTemplate}"> <dxn:ImageAndTextDecorator x:Name="itemContent" ImageFallbackSize="16" DisplayModeImageMargin="3" DockingLeftContentMargin="70,3,3,3" DisplayModeTextMargin="3" ImageDocking="{Binding Path=(dxn:NavBarViewBase.LayoutSettings).ImageDocking, RelativeSource={RelativeSource TemplatedParent}}" ImageSource="{Binding Path=ImageSource}" ImageStyle="{DynamicResource {dxnt:NavBarItemControlThemeKey ResourceKey=ItemImageStyle}}" ContentSource="{Binding Path=Content}" ContentStyle="{DynamicResource {dxnt:NavBarItemControlThemeKey ResourceKey=ItemTextStyle}}" /> </DataTemplate> <!-- Item内容的选择样式MouseOver,Selected--> <ControlTemplate x:Key="{dxnt:CommonElementsThemeKey ResourceKey=ItemTemplate}" TargetType="{x:Type dxn:NavBarItemControl}"> <Grid x:Name="grid" Margin="0" Width="218" Height="30" > <Grid.Background> <ImageBrush ImageSource="/Assets/images/ListBoxDefaulted.png" Stretch="Uniform" /> </Grid.Background> <ContentPresenter x:Name="item" /> </Grid> <ControlTemplate.Triggers> <Trigger Property="IsPressed" Value="True"> <Setter Property="Background" TargetName="grid"> <Setter.Value> <ImageBrush ImageSource="/Assets/images/ListBoxSelected.png" Stretch="Uniform" /> </Setter.Value> </Setter> </Trigger> <Trigger Property="IsMouseOver" Value="True"> <Setter Property="Background" TargetName="grid"> <Setter.Value> <ImageBrush ImageSource="/Assets/images/ListBoxSelected.png" Stretch="Uniform" /> </Setter.Value> </Setter> </Trigger> <!--item selected background--> <DataTrigger Binding="{Binding Path=IsSelected}" Value="true"> <Setter Property="Background" TargetName="grid"> <Setter.Value> <ImageBrush ImageSource="/Assets/images/ListBoxSelected.png" Stretch="Uniform" /> </Setter.Value> </Setter> </DataTrigger> <DataTrigger Binding="{Binding Path=IsEnabled}" Value="false"> <Setter Property="Opacity" Value="0.5"/> </DataTrigger> </ControlTemplate.Triggers> </ControlTemplate> <!-- 可能是作用于滚动条,暂不清楚 --> <ControlTemplate x:Key="{dxnt:CommonElementsThemeKey ResourceKey=SmoothScrollTemplate}" TargetType="ContentControl"> <dxn:GroupScrollableContentControl x:Name="scrollableContent" Orientation="{Binding Path=NavBar.View.ItemsPanelOrientation}" dx:FocusHelper2.Focusable="False"> <dxn:GroupScrollableContentControl.AllowScrolling> <Binding Path="NavBar.View.NavBarViewKind"> <Binding.Converter> <dxn:NavBarViewKindToBooleanConverter/> </Binding.Converter> </Binding> </dxn:GroupScrollableContentControl.AllowScrolling> <ContentPresenter/> </dxn:GroupScrollableContentControl> </ControlTemplate> <!-- 针对边框Items列表的边框;当内容过多时出现的滚动条 --> <ControlTemplate x:Key="{dxnt:CommonElementsThemeKey ResourceKey=GroupItemsContainerTemplate}" TargetType="dxn:GroupItemsContainer"> <Grid> <dx:LayoutTransformPanel Orientation="{Binding Path=NavBar.View.Orientation}"> <Border x:Name="border" Background="Transparent" BorderBrush="#990000" BorderThickness="2" Padding="0"> <Border HorizontalAlignment="Stretch" x:Name="border2" Width="Auto" Height="Auto" Background="#FFFFFFFF" BorderThickness="0"/> </Border> </dx:LayoutTransformPanel> <dxn:ScrollControl x:Name="scrollControl" ScrollButtonsControlTemplate="{DynamicResource {dxnt:CommonElementsThemeKey ResourceKey=SmoothScrollTemplate}}" ScrollBarControlTemplate="{DynamicResource {dxnt:CommonElementsThemeKey ResourceKey=NormalScrollTemplate}}" dx:FocusHelper2.Focusable="False"> <dx:LayoutTransformPanel Orientation="{Binding Path=NavBar.View.Orientation}"> <ContentPresenter x:Name="content" Content="{TemplateBinding Content}" ContentTemplate="{TemplateBinding ContentTemplate}" Margin="0" /> <!-- 影响Item整个框内容的布局 --> </dx:LayoutTransformPanel> </dxn:ScrollControl> </Grid> </ControlTemplate> <!-- ScrollUpButtonTemplate 是整个NavBar滚动按钮 (在SideBarView模式没啥用,略)--> <!-- ScrollUpGroupButtonTemplate 是ItemGroup内的滚动按钮--> <ControlTemplate x:Key="{dxnt:CommonElementsThemeKey ResourceKey=ScrollUpGroupButtonTemplate}" TargetType="{x:Type RepeatButton}"> <Border x:Name="border" Background="LightGray" BorderBrush="#FFFFFFFF" BorderThickness="0,0,0,0" Margin="0"> <Path Stretch="Fill" Fill="Black" Data="F1 M 1257,761L 1258,761L 1262,766L 1253,766L 1257,761 Z " Width="9" Height="5" Margin="0,2,0,2" x:Name="path"/> </Border> <ControlTemplate.Triggers> <Trigger Property="IsEnabled" Value="False"> <Setter Property="Opacity" Value="0.25" TargetName="path"/> </Trigger> <Trigger Property="IsMouseOver" Value="True"> <Setter Property="Background" Value="Gray" TargetName="border"/> </Trigger> <Trigger Property="IsPressed" Value="True"> <Setter Property="Background" Value="Gray" TargetName="border"/> <Setter Property="Fill" Value="#FFD4DFF0" TargetName="path"/> </Trigger> </ControlTemplate.Triggers> </ControlTemplate> <ControlTemplate x:Key="{dxnt:CommonElementsThemeKey ResourceKey=ScrollDownGroupButtonTemplate}" TargetType="{x:Type RepeatButton}"> <Border x:Name="border" Background="LightGray" BorderBrush="#FFFFFF" BorderThickness="0,0,0,0" Margin="0"> <Path Stretch="Fill" Fill="Black" Data="F1 M 1263,769L 1262,769L 1258,764L 1267,764L 1263,769 Z " Margin="0,2,0,2" Width="9" Height="5" x:Name="path"/> </Border> <ControlTemplate.Triggers> <Trigger Property="IsEnabled" Value="False"> <Setter Property="Opacity" Value="0.25" TargetName="path"/> </Trigger> <Trigger Property="IsMouseOver" Value="True"> <Setter Property="Background" Value="Gray" TargetName="border"/> </Trigger> <Trigger Property="IsPressed" Value="True"> <Setter Property="Background" Value="Gray" TargetName="border"/> <Setter Property="Fill" Value="#FFD4DFF0" TargetName="path"/> </Trigger> </ControlTemplate.Triggers> </ControlTemplate></ResourceDictionary>
注:暂时还没找到当Header被选择时,触发选择效果,目前只有IsMouseOver,IsPressed响应,但是item内容就可以,有待日后更新.
- WPF第三方控件DXperience的dxn:NavBarControl添加样式
- 用过NavBarControl第三方控件的朋友进
- WPF - 第三方控件
- WPF - 第三方控件
- WPF - 第三方控件
- WPF - 第三方控件
- DXperience皮肤设置 C#第三方控件学习笔记
- DEV控件 navbarControl 动态添加xml文件
- C#添加第三方控件
- NavBarControl控件
- NET-第三方控件-AspNetPager设置样式
- WPF 后台给控件添加样式
- Wpf 动态添加控件设置样式
- 添加标签的第三方
- 第三方组件的添加
- 第三方控件的安装
- 收集的第三方控件
- 收集的第三方控件
- PHP依赖注入简单理解
- hiberanate学习笔记(四)flush缓存和hibernate的主键生成策略
- android:layout_weight的一些疑惑的地方
- ueditor 编辑器的配置 实现了上传图片与文件功能---附效果图
- 斯坦福机器学习_神经网络
- WPF第三方控件DXperience的dxn:NavBarControl添加样式
- 带通配符的问题
- 使用符号表模拟栈
- Vtigercrm的表结构
- 开源项目之Android StandOut(浮动窗口)
- Android 去掉标题栏
- poj 1018 Communication System
- 如何整合Office Web Apps至自己开发的系统(二)
- 怎么在一台机器上同时启动2个tomcat