WinRT XAML工具包图表控件:如何设置图例项目的样式?

时间:2013-02-13 13:49:06

标签: windows-runtime windows-store-apps winrt-xaml silverlight-toolkit winrt-xaml-toolkit

我想设置WinRT XAML Toolkit图表控件的图例项的样式。

我检查了源代码并找到了以下样式:

<ResourceDictionary
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:datavis="using:WinRTXamlToolkit.Controls.DataVisualization">

    <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>
</ResourceDictionary>

但这会设置Legend容器和Title的样式。

如何设置图例项的样式?

  

修改   非常感谢菲利普的回答,这正是我想要的。   但Visual Studio在以下位置给了我一个错误:

<Setter.Value>
                    <ItemsPanelTemplate>
                        <controls:UniformGrid
                            Columns="1"
                            Rows="5" />
                    </ItemsPanelTemplate>
                </Setter.Value>

它说没有找到控件:UniformGrid ,我删除了这一部分,并设法使事情正常工作。

1 个答案:

答案 0 :(得分:5)

首先要注意的是Legend控件是ItemsControl,因此您可以使用ItemContainerStyle设置其项目的样式。项目模板由LegendItem样式管理,您也可以在源代码中找到该样式。在应用程序中设置样式的方法是通过在Style控件上设置Legend属性来设置LegendStyle的{​​{1}}。然后在Chart样式集LegendItemContainerStyle Style。我没有检查LegendItem控件在Blend中是否正常运行,但如果是这样的话,那将是编辑这些控件的最佳位置。我只是手工制作了这个样本。

enter image description here

Chart