LabeledPieChart:样式覆盖DataTemplate

时间:2012-03-21 09:35:20

标签: wpf vb.net styles datatemplate pie-chart

我在Style中定制了LabeledPieChart的模板(来源:Bea)。然后我为LabeledPieChart的Slices创建了一个DataTemplate。如果单独使用样式和DataTemplate,它们都可以很好地工作。如果它们在一起,则Style会覆盖他没有效果的DataTemplate。是否有可能将这两者结合起来? 这是我的代码(Style和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:

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

0 个答案:

没有答案