【问题标题】:WinRT XAML Toolkit Charting Controls: How to style Legend Items?WinRT XAML 工具包图表控件:如何设置图例项的样式?
【发布时间】:2013-02-13 13:49:05
【问题描述】:

我想为 WinRT XAML 工具包图表控件的图例项设置样式。

查了源码,发现如下样式:

<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 的样式。

如何设置图例项的样式??

编辑: 非常感谢 Filip 的回答,这正是我想要的。 但是 Visual Studio 在以下位置给了我一个错误:

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

它说没有找到 controls:UniformGrid,我删除了这部分并设法让事情正常进行。

【问题讨论】:

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


    【解决方案1】:

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

    <charting:Chart
        x:Name="PieChart"
        Title="Pie Chart"
        Margin="70,0">
        <charting:Chart.Series>
            <Series:PieSeries
                Title="Population"
                ItemsSource="{Binding Items}"
                IndependentValueBinding="{Binding Name}"
                DependentValueBinding="{Binding Value}"
                IsSelectionEnabled="True" />
        </charting:Chart.Series>
        <charting:Chart.LegendStyle>
            <Style
                TargetType="datavis:Legend">
                <Setter
                    Property="VerticalAlignment"
                    Value="Stretch" />
                <Setter
                    Property="Background"
                    Value="#444" />
                <Setter
                    Property="ItemsPanel">
                    <Setter.Value>
                        <ItemsPanelTemplate>
                            <controls:UniformGrid
                                Columns="1"
                                Rows="5" />
                        </ItemsPanelTemplate>
                    </Setter.Value>
                </Setter>
                <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="ItemContainerStyle"
                    xmlns:series="using:WinRTXamlToolkit.Controls.DataVisualization.Charting">
                    <Setter.Value>
                        <Style
                            TargetType="series:LegendItem">
                            <Setter
                                Property="Template">
                                <Setter.Value>
                                    <ControlTemplate
                                        TargetType="series:LegendItem">
                                        <Border
                                            MinWidth="200"
                                            Margin="20,10"
                                            CornerRadius="10"
                                            VerticalAlignment="Stretch"
                                            HorizontalAlignment="Stretch"
                                            Background="{Binding Background}">
                                            <datavis:Title
                                                HorizontalAlignment="Center"
                                                VerticalAlignment="Center"
                                                FontSize="24"
                                                FontWeight="Bold"
                                                Content="{TemplateBinding Content}" />
                                        </Border>
                                    </ControlTemplate>
                                </Setter.Value>
                            </Setter>
                        </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>
        </charting:Chart.LegendStyle>
    </charting:Chart>
    

    【讨论】:

      猜你喜欢
      • 2017-07-22
      • 1970-01-01
      • 2012-10-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多