2017-11-27 7 views
0

여기 내 문제가 있습니다.라이브 차트가 기본 범례를 변경합니다.

일부 데이터를 표시하는 데 LiveCharts를 사용하고 있습니다. 표시되는 모든 데이터를 나타내는 범례가 표시 될 때까지는 문제가 없습니다.

chart with legend

그것은 예를 들어 색상 (뇌졸중) 또는 DefaultGeometries을위한 기반 전설을 보여 possibile인가요? 당신의 도움에 미리

감사합니다,

디에고

답변

0

나는이 조금 늦게하지만 난 지금 여기에, 비슷한 뭔가를 찾고 내가 가지고 올 수 있었던 것입니다되었다 알고있다.

새 컬렉션을 만들고 Live Charts Energy Predictions의 예를 따라야합니다. 바인더 제본 목록에서

<ListBox Name="ListBox" MinHeight="250" ItemsSource="{Binding AllSeriesGroupByName, ElementName=FastGraphRoot}" Panel.ZIndex="1" BorderThickness="0" Background="Transparent"> 
     <ListBox.ItemTemplate> 
      <DataTemplate DataType="{x:Type wpf:LineSeries}"> 
       <TextBlock Text="{Binding Title}" 
          Foreground="{Binding Stroke}" 
          FontSize="24"/> 
      </DataTemplate> 
     </ListBox.ItemTemplate> 
     <ListBox.ItemContainerStyle> 
      <Style TargetType="{x:Type ListBoxItem}"> 
       <Setter Property="Background" Value="Transparent" /> 
       <Setter Property="Template"> 
        <Setter.Value> 
         <ControlTemplate TargetType="{x:Type ListBoxItem}"> 
          <ContentPresenter /> 
         </ControlTemplate> 
        </Setter.Value> 
       </Setter> 
      </Style> 
     </ListBox.ItemContainerStyle> 
    </ListBox> 

올 것 :

먼저 당신이 차트에 대한

<wpf:CartesianChart Hoverable="False" DataTooltip="{x:Null}" DisableAnimations="True" LegendLocation="None" Series="{Binding AllSeries, ElementName=FastGraphRoot}"> 

새로운 전설 코드 (.xaml에서 중요한 부분을)를 LegendLocation = "없음"을 설정해야 원래 시리즈지만 그룹화, 나는 이것을 위해 속성을 사용했습니다 :

private SeriesCollection _allSeriesGroupByName = new SeriesCollection(); 
public SeriesCollection AllSeriesGroupByName { get { return _allSeriesGroupByName; } set { _allSeriesGroupByName = value; OnPropertyChanged(); } } 

당신은 그것을 채울 수 있습니다. 이 코드 (또는 더 빨리 생각하는 다른 것)를 암시하십시오.

var col = collection.GroupBy(g => ((LineSeries)g).Stroke).Select(p => p.First()); 
AllSeriesGroupByName = new SeriesCollection(); 
foreach (var c in col) 
{ 
    AllSeriesGroupByName.Add(c); 
}