【问题标题】:Where to Find the default wpf chart template?在哪里可以找到默认的 wpf 图表模板?
【发布时间】:2015-04-29 14:08:38
【问题描述】:

我正在使用 WPFToolKit。我想根据默认图表样式模板更改 wpf 图表的外观。

我注意到一个图表实例有一些属性,比如TitleStyleLegendStyleChartAreaStylePlotAreaStyle我认为修改这些属性会改变图表的外观。

在哪里可以找到这些默认样式模板?

【问题讨论】:

    标签: c# wpf templates charts wpftoolkit


    【解决方案1】:

    您可以直接从 Visual Studio 中提取默认的ControlTemplates:

    1. 在 WPF 设计器中,选择相关控件,或将鼠标光标放在 XAML 中的相关控件上。

    2. F4 打开属性窗口。

    3. 打开 Miscellaneous 类别以查找 Template 属性,或在窗口顶部的搜索字段中键入 Template .

    4. 单击模板字段右侧的小方块,然后选择转换为新资源...选项:

      李>

    1. 在弹出对话框中,将要添加的新 ControlTemplate 命名并决定要在哪里定义它:

    1. 点击确定按钮。

    取自How to Extract Default Control Template In Visual Studio?问题。

    【讨论】:

      【解决方案2】:

      我刚刚在互联网上进行了一些搜索,并从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>
      

      您需要的一切都在源代码中,例如默认数据点样式等。对我帮助很大!!!

      【讨论】:

        猜你喜欢
        • 2011-04-02
        • 2022-07-19
        • 1970-01-01
        • 1970-01-01
        • 2014-08-08
        • 1970-01-01
        • 2011-11-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多