LabeledPieChart: переопределение стиля DataTemplate - PullRequest
1 голос
/ 21 марта 2012

Я настроил шаблон LabeledPieChart (источник: Bea ) в стиле.Затем я создал DataTemplate для фрагментов LabeledPieChart.И стиль, и DataTemplate прекрасно работают, если они одни.Если они вместе, стиль переопределяет шаблон данных, что он не имеет никакого эффекта.Можно ли объединить эти два?Вот мой код (Стиль и шаблон данных находятся в Window.Resources):

Стиль:

<Style TargetType="customControls:LabeledPieChart" >
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="customControls:LabeledPieChart">
                    <Grid>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="15*" />
                            <ColumnDefinition Width="9*" />
                        </Grid.ColumnDefinitions>
                        <Grid Grid.Column="0">
                            <Grid.RowDefinitions>
                                <RowDefinition Height="Auto" />
                                <RowDefinition Height="*" />
                            </Grid.RowDefinitions>
                            <dataVis:Title Content="{TemplateBinding Title}" Style="{TemplateBinding TitleStyle}" Margin="0,5,0,3"/>
                            <Grid Grid.Row="1" Margin="5">
                                <Grid.ColumnDefinitions>
                                    <ColumnDefinition Width="*" />
                                    <ColumnDefinition Width="Auto" />
                                </Grid.ColumnDefinitions>
                                <chartPrmtvs:EdgePanel x:Name="ChartArea" Style="{TemplateBinding ChartAreaStyle}">
                                    <Grid Canvas.ZIndex="-1" Background="Transparent" />
                                    <Border Canvas.ZIndex="10" BorderBrush="#FF919191" BorderThickness="0" />
                                </chartPrmtvs:EdgePanel>
                            </Grid>
                        </Grid>
                        <dataVis:Legend x:Name="Legend" Style="{TemplateBinding LegendStyle}" Title="{TemplateBinding LegendTitle}"
                                                BorderThickness="0" Background="Transparent" FontSize="15" Grid.Column="1"/>
                    </Grid>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

Шаблон данных:

<DataTemplate DataType="{x:Type local:City}" >
        <Border BorderThickness="1" BorderBrush="Gray">
            <StackPanel Background="White" Orientation="Horizontal">
                <TextBlock Text="{Binding RelativeSource={RelativeSource AncestorType={x:Type customControls:PieChartLabel}}, Path=FormattedRatio}" VerticalAlignment="Center" Margin="5,0,5,0" />
                <TextBlock Text="- " />
                <TextBlock Text="{Binding Path=Population}" Margin="5,0,5,0" />
                <TextBlock Text="- " />
                <TextBlock Text="{Binding Name}" Margin="0,0,5,0"/>
            </StackPanel>
        </Border>
    </DataTemplate>

LabeldPieChart:

<Grid>
    <customControls:LabeledPieChart 
        x:Name="labeledPieChart"
        Title="Population of Puget Sound Cities"
        Height="500" Width="700"
        Grid.Row="3"
        BorderBrush="Gray"
        >
        <customControls:LabeledPieChart.Series>
            <customControls:LabeledPieSeries 
                x:Name="labeledPieSeries"
                ItemsSource="{Binding}" 
                IndependentValuePath="Name" 
                DependentValuePath="Population" 
                IsSelectionEnabled="True" 
                LabelDisplayMode="Auto"
                />
        </customControls:LabeledPieChart.Series>
    </customControls:LabeledPieChart>
</Grid>
...