C# CartesianChart(实时图表)没有';无法使用数据模板
我使用LiveChart库,但在显示图表时遇到问题。事实上,在我的窗口中,我需要许多具有多种类型的图表,因此我使用DataTemplateSelector,链接到每种图表类型的类。但是,当图表出现时,上面没有数据。我试图在“列图”的声明中添加C# CartesianChart(实时图表)没有';无法使用数据模板,c#,wpf,xaml,mvvm,livecharts,C#,Wpf,Xaml,Mvvm,Livecharts,我使用LiveChart库,但在显示图表时遇到问题。事实上,在我的窗口中,我需要许多具有多种类型的图表,因此我使用DataTemplateSelector,链接到每种图表类型的类。但是,当图表出现时,上面没有数据。我试图在“列图”的声明中添加DataContext=“{Binding}”,但没有成功 以下是我的代码摘录: ResultView.xaml <ScrollViewer VerticalScrollBarVisibility="Auto" HorizontalScrollBarV
DataContext=“{Binding}”
,但没有成功
以下是我的代码摘录:
ResultView.xaml
<ScrollViewer VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto">
<FrameworkElement.Resources>
<DataTemplate x:Key="graphEmptyTemlpate">
<StackPanel Width="Auto" Height="60" Orientation="Horizontal" MaxWidth="700">
<TextBlock Text="{Binding name}" VerticalAlignment="Center" TextAlignment="Center" FontSize="20" Margin="0,0,0,0" Foreground="#FF006B93"/>
</StackPanel>
</DataTemplate>
<DataTemplate x:Key="columnTemplate">
<StackPanel Background="#FFBFBFBF">
<TextBlock Text="{Binding title}"/>
<TextBlock Text="{Binding subTitle}"/>
<lvc:CartesianChart Width="400" Height="400" Series="{Binding listSeries}">
</lvc:CartesianChart>
</StackPanel>
</DataTemplate>
<local:GraphTemplateSelector
ColumnTemplate="{StaticResource columnTemplate}"
GraphEmptyTemplate="{StaticResource graphEmptyTemlpate}"
x:Key="graphTemplateSelector" />
</FrameworkElement.Resources>
<StackPanel Orientation="Horizontal" >
<ItemsControl ItemsSource="{Binding Results}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Expander Header="{Binding Title}"
IsExpanded="True"
Margin="10 10 10 10"
FontSize="20"
Foreground="White">
<ItemsControl ItemsSource="{Binding Items}"
ItemTemplateSelector="{DynamicResource graphTemplateSelector}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel Margin="10 10 10 10" Orientation="Vertical"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
</Expander>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</StackPanel>
</ScrollViewer>
我的ViewModel类的构造函数位于ResultViewModel.cs中
在xaml中,结果对应于c#中的结果,项对应于RPM#
公共结果视图模型()
{
实例=此;
this.Results=新的ObservableCollection();
this.rpmigation=新结果部分(“搅拌部分的结果”);
ColumnGraph gr=新ColumnGraph();
Rp搅拌。项目。添加(gr);
此.Results.Add(_rp搅拌);
}
最后是ColumnGraph.cs
public class ColumnGraph : IGraph
{
public SeriesCollection listSeries { get; set; }
public ColumnGraph()
{
listSeries = new SeriesCollection
{
new LineSeries
{
Title = "Series 1",
Values = new ChartValues<double> { 4,7,8,9,5,4,2}
}
};
}
}
公共类列图:IGraph
{
公共序列集合列表系列{get;set;}
公共专栏作家()
{
listSeries=新系列集合
{
新系列
{
Title=“系列1”,
值=新图表值{4,7,8,9,5,4,2}
}
};
}
}
感谢您的帮助,目前SeriesCollection类不是WPF UiFramework元素,我真的不想这样做,但我想我们不需要这样做来避免这个问题 我不确定这是WPF的错误,还是我们做错了 任何方法,我都会进一步研究,现在另一种方法是尝试以下语法:
DataSource = new List<ChartValues<double>>
{
new ChartValues<double> {r.Next(0, 10), r.Next(0, 10), r.Next(0, 10)},
new ChartValues<double> {r.Next(0, 10), r.Next(0, 10), r.Next(0, 10)},
new ChartValues<double> {r.Next(0, 10), r.Next(0, 10), r.Next(0, 10)}
};
DataContext = this;
DataSource=新列表
{
新的图表值{r.Next(0,10),r.Next(0,10),r.Next(0,10)},
新的图表值{r.Next(0,10),r.Next(0,10),r.Next(0,10)},
新图表值{r.Next(0,10),r.Next(0,10),r.Next(0,10)}
};
DataContext=this;
还有XAML
<ItemsControl ItemsSource="{Binding DataSource}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<lvc:CartesianChart Height="400">
<lvc:CartesianChart.Series>
<lvc:LineSeries Values="{Binding}"></lvc:LineSeries>
</lvc:CartesianChart.Series>
</lvc:CartesianChart>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
感谢您在回购协议中打开此问题,我将尽快解决此问题,因为此问题自0.7.7版本以来已得到解决
<ItemsControl ItemsSource="{Binding DataSource}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<lvc:CartesianChart Height="400">
<lvc:CartesianChart.Series>
<lvc:LineSeries Values="{Binding}"></lvc:LineSeries>
</lvc:CartesianChart.Series>
</lvc:CartesianChart>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>