【发布时间】:2015-04-29 14:08:38
【问题描述】:
我正在使用 WPFToolKit。我想根据默认图表样式模板更改 wpf 图表的外观。
我注意到一个图表实例有一些属性,比如TitleStyleLegendStyleChartAreaStylePlotAreaStyle我认为修改这些属性会改变图表的外观。
在哪里可以找到这些默认样式模板?
【问题讨论】:
标签: c# wpf templates charts wpftoolkit
我正在使用 WPFToolKit。我想根据默认图表样式模板更改 wpf 图表的外观。
我注意到一个图表实例有一些属性,比如TitleStyleLegendStyleChartAreaStylePlotAreaStyle我认为修改这些属性会改变图表的外观。
在哪里可以找到这些默认样式模板?
【问题讨论】:
标签: c# wpf templates charts wpftoolkit
您可以直接从 Visual Studio 中提取默认的ControlTemplates:
在 WPF 设计器中,选择相关控件,或将鼠标光标放在 XAML 中的相关控件上。
按 F4 打开属性窗口。
打开 Miscellaneous 类别以查找 Template 属性,或在窗口顶部的搜索字段中键入 Template .
单击模板字段右侧的小方块,然后选择转换为新资源...选项:
李>ControlTemplate 命名并决定要在哪里定义它:取自How to Extract Default Control Template In Visual Studio?问题。
【讨论】:
我刚刚在互联网上进行了一些搜索,并从here 中找到了一个非常有用的资源。是WPFToolKit 3.5的更新版本,增加了很多有用的功能,非常感谢作者的工作:)
下载源代码,你可以编译/编译得到System.Windows.Controls.DataVisualization.Toolkit.dll的更新(4.0)版本,
我在源码中找到了默认模板,这里是:
默认图表模板:
<ControlTemplate TargetType="charting:Chart">
<Border Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Padding="{TemplateBinding Padding}">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<datavis:Title Content="{TemplateBinding Title}" Style="{TemplateBinding TitleStyle}" />
<!-- Use a nested Grid to avoid possible clipping behavior resulting from ColumnSpan+Width=Auto -->
<Grid Grid.Row="1" Margin="0,15,0,15">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<datavis:Legend x:Name="Legend" Header="{TemplateBinding LegendTitle}" Style="{TemplateBinding LegendStyle}" Grid.Column="1" />
<chartingprimitives:EdgePanel x:Name="ChartArea" Style="{TemplateBinding ChartAreaStyle}">
<Grid Canvas.ZIndex="-1" Style="{TemplateBinding PlotAreaStyle}" />
<Border Canvas.ZIndex="10" BorderBrush="#FF919191" BorderThickness="1" />
</chartingprimitives:EdgePanel>
</Grid>
</Grid>
</Border>
</ControlTemplate>
以及其他样式,例如:
轴样式
<Style TargetType="charting:DisplayAxis">
<Setter Property="IsTabStop" Value="False" />
<Setter Property="TitleStyle">
<Setter.Value>
<Style TargetType="datavis:Title">
<Setter Property="FontStyle" Value="Italic" />
</Style>
</Setter.Value>
</Setter>
<Setter Property="MajorTickMarkStyle">
<Setter.Value>
<Style TargetType="Line">
<Setter Property="Stroke" Value="Black" />
<Setter Property="X2" Value="4" />
<Setter Property="Y2" Value="4" />
</Style>
</Setter.Value>
</Setter>
<Setter Property="GridLineStyle">
<Setter.Value>
<Style TargetType="Line">
<Setter Property="Stroke" Value="Gray" />
</Style>
</Setter.Value>
</Setter>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="charting:DisplayAxis">
<Grid x:Name="AxisGrid" Background="{TemplateBinding Background}">
<datavis:Title x:Name="AxisTitle" Style="{TemplateBinding TitleStyle}" />
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
标题样式:
<Style TargetType="datavis:Title">
<Setter Property="HorizontalContentAlignment" Value="Left" />
<Setter Property="VerticalContentAlignment" Value="Top" />
<Setter Property="IsTabStop" Value="False" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="datavis:Title">
<Grid Background="{TemplateBinding Background}">
<ContentPresenter Content="{TemplateBinding Content}" ContentTemplate="{TemplateBinding ContentTemplate}" Cursor="{TemplateBinding Cursor}" Margin="{TemplateBinding Padding}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" />
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
传奇风格:
<Style TargetType="datavis:Legend">
<Setter Property="BorderBrush" Value="Black" />
<Setter Property="BorderThickness" Value="1" />
<Setter Property="IsTabStop" Value="False" />
<Setter Property="TitleStyle">
<Setter.Value>
<Style TargetType="datavis:Title">
<Setter Property="Margin" Value="0,5,0,10" />
<Setter Property="FontWeight" Value="Bold" />
<Setter Property="HorizontalAlignment" Value="Center" />
</Style>
</Setter.Value>
</Setter>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="datavis:Legend">
<Border Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Padding="2">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition />
</Grid.RowDefinitions>
<datavis:Title Grid.Row="0" x:Name="HeaderContent" Content="{TemplateBinding Header}" ContentTemplate="{TemplateBinding HeaderTemplate}" Style="{TemplateBinding TitleStyle}" />
<ScrollViewer Grid.Row="1" VerticalScrollBarVisibility="Auto" BorderThickness="0" Padding="0" IsTabStop="False">
<ItemsPresenter x:Name="Items" Margin="10,0,10,10" />
</ScrollViewer>
</Grid>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
传奇物品样式:
<Style TargetType="charting:LegendItem">
<Setter Property="IsTabStop" Value="False" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="charting:LegendItem">
<Border Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}">
<StackPanel Orientation="Horizontal">
<Rectangle Width="8" Height="8" Fill="{Binding Background}" Stroke="{Binding BorderBrush}" StrokeThickness="1" Margin="0,0,3,0" />
<datavis:Title Content="{TemplateBinding Content}" />
</StackPanel>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
您需要的一切都在源代码中,例如默认数据点样式等。对我帮助很大!!!
【讨论】: