Простой способ создать стиль с незначительными изменениями для Telerik Control - PullRequest
0 голосов
/ 12 августа 2011

Мой проект в настоящее время имеет круговую диаграмму с легендой. Из-за ограничений по размеру меня попросили внести изменения, чтобы при наведении указателя мыши на имя в легенде оно отображало полное имя (если оно было частично обрезано). Это открыло для меня проблему, заключающуюся в том, что если вы хотите внести незначительные функциональные изменения в элемент управления Telerik, вам придется разработать для него полный стиль.

Я чувствую, что на это нет простого ответа, поэтому я решила спросить и посмотреть, поняли ли умные штаны что-нибудь умное. Мы используем большое количество средств управления Telerik, поэтому, если бы я мог управлять ими с помощью чего-то подобного, без необходимости полностью переделывать их, это дало бы мне огромный контроль над более продвинутыми функциями моего интерфейса.

Как примечание, мы в настоящее время используем версию 2011.1.315.1040, я попытался обновить ее до самой последней версии сегодня, но кажется, что они изменили элемент управления, который мы часто используем, поэтому я предпочел бы не обновлять, если нет выгода, так как потребуется много переделок.

Пример стиля на сайте telerik для того, что я пытался изменить, можно найти здесь

Вот круговая диаграмма, которую мы используем в качестве примера.

<telerik:RadChart Name="CoreChart" 
                          VerticalAlignment="Top" 
                          PaletteBrushesUseSolidColors="True" 
                          PaletteBrushesRepeat="True" 
                          BorderBrush="Transparent" 
                          Background="Transparent" 
                          BorderThickness="0">
    <telerik:RadChart.PaletteBrushes>
        <SolidColorBrush Color="#93d2ff" />
        <SolidColorBrush Color="#ce0013" />
    </telerik:RadChart.PaletteBrushes>
    <telerik:RadChart.SeriesMappings>
        <telerik:SeriesMapping>
            <telerik:ItemMapping FieldName="Value" DataPointMember="YValue" />
            <telerik:ItemMapping FieldName="Title" DataPointMember="LegendLabel" />
            <telerik:SeriesMapping.SeriesDefinition>
                <telerik:PieSeriesDefinition ShowItemLabels="False"  
                         ShowItemToolTips="True" 
                         ItemToolTipFormat="{Binding ToolTipFormat}">
                    <telerik:PieSeriesDefinition.InteractivitySettings>
                        <telerik:InteractivitySettings SelectionMode="Single"  
                                  SelectionScope="Item" HoverScope="None"/>
                    </telerik:PieSeriesDefinition.InteractivitySettings>
                </telerik:PieSeriesDefinition>
            </telerik:SeriesMapping.SeriesDefinition>
        </telerik:SeriesMapping>
    </telerik:RadChart.SeriesMappings>

    <telerik:RadChart.DefaultView>
        <telerik:ChartDefaultView ChartLegendPosition="Right" >
            <telerik:ChartDefaultView.ChartArea>
                <telerik:ChartArea HorizontalAlignment="Left" LegendName="ChartLegend"
                         BorderBrush="Transparent" EnableAnimations="True" 
                         Background="Transparent" >
                    <telerik:ChartArea.AxisX>
                        <telerik:AxisX AxisLabelsVisibility="Collapsed" />
                    </telerik:ChartArea.AxisX>
                </telerik:ChartArea>
            </telerik:ChartDefaultView.ChartArea>
            <telerik:ChartDefaultView.ChartLegend >
                <telerik:ChartLegend x:Name="ChartLegend" Style="{StaticResource 
                       ChartLegendStyle}" LegendItemMarkerShape="Square" Header="" 
                       BorderThickness="0" Background="Transparent"
                       BorderBrush="Transparent" Width="150" />
            </telerik:ChartDefaultView.ChartLegend>
        </telerik:ChartDefaultView>

    </telerik:RadChart.DefaultView>
</telerik:RadChart>

1 Ответ

1 голос
/ 12 августа 2011

При создании элемента управления у вас должен быть стиль с ControlTemplate для ChartLegendItem.В ссылке на документацию Telerik есть TextBlock с именем "PART_TextBlock".Измените его следующим образом:

<TextBlock x:Name="PART_TextBlock"
           Grid.Column="1"
           Foreground="{TemplateBinding Foreground}"
           Margin="{TemplateBinding Margin}"
           Padding="{TemplateBinding Padding}"
           Text="{TemplateBinding Label}"
           TextTrimming="CharacterEllipsis"
           ToolTipService.ToolTip="{Binding Text, RelativeSource={RelativeSource Self}}" />

В случае ChartLegend

<telerik:ChartLegend x:Name="ChartLegend" 
                     .....
                     LegendItemStyle="{StaticResource MyLegendItemStyle}" />

Это избавит вас от необходимости стиля Legend.

Еще один совет, чтобы получить все стили по умолчанию для элементов управления Telerik, перейдите к c:\Program Files (x86)\Telerik\RadControls for Silverlight Q1 2011\Themes - там есть решение, которое имеет все стили всех тем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...