- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试添加动态 OxyPlot 图表,但它不起作用。
<Window x:Class="WpfApplication8.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid >
<Grid.RowDefinitions>
<RowDefinition Height="20"></RowDefinition>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
</Grid.ColumnDefinitions>
<ItemsControl ItemsSource="{Binding TheList}" x:Name="MyGrid" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Height="Auto" Grid.Row="1">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<UniformGrid Rows="{Binding Path=Rows,Mode=TwoWay}" Columns="{Binding Path=Columns,Mode=TwoWay}"></UniformGrid>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
<StackPanel Orientation="Horizontal">
<Button Command="{Binding One}">1</Button>
<Button Command="{Binding Four}">4</Button>
<Button Command="{Binding Eight}">8</Button>
</StackPanel>
</Grid>
代码看起来像这样。 FourButton 和 EightButton 不起作用。
using GalaSoft.MvvmLight.Command;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.ComponentModel;
using System.Collections.ObjectModel;
using OxyPlot.Wpf;
using OxyPlot;
namespace WpfApplication8
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
///
public partial class MainWindow : Window
{
public class ViewModelTest : INotifyPropertyChanged
{
private PlotModel plotModel;
public PlotModel PlotModel
{
get { return plotModel; }
set { plotModel = value; NotifyPropertyChanged("PlotModel"); }
}
private ObservableCollection<PlotModel> theList;
public ObservableCollection<PlotModel> TheList
{
get { return theList; }
set { theList = value; NotifyPropertyChanged("TheList"); }
}
private int rows;
public int Rows
{
get { return rows; }
set { rows = value; NotifyPropertyChanged("Rows"); }
}
private int columns;
public int Columns
{
get { return columns; }
set { columns = value; NotifyPropertyChanged("Columns"); }
}
public ViewModelTest()
{
PlotModel = new PlotModel();
PlotModel.LegendTitle = "Legend";
PlotModel.LegendOrientation = LegendOrientation.Horizontal;
PlotModel.LegendPlacement = LegendPlacement.Outside;
PlotModel.LegendPosition = LegendPosition.TopRight;
PlotModel.LegendBackground = OxyColor.FromAColor(200, OxyColors.White);
PlotModel.LegendBorder = OxyColors.Black;
TheList = new ObservableCollection<PlotModel>();
One = new RelayCommand(() => OneButton());
Four = new RelayCommand(() => FourButton());
Eight = new RelayCommand(() => EightButton());
}
public ICommand One { get; set; }
public ICommand Four { get; set; }
public ICommand Eight { get; set; }
public event PropertyChangedEventHandler PropertyChanged;
private void NotifyPropertyChanged(String info)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(info));
}
}
public void OneButton()
{
Rows = 1;
Columns = 1;
TheList.Clear();
for (int i = 0; i < 1; i++)
{
TheList.Add(PlotModel);
}
}
public void FourButton()
{
Rows = 2;
Columns = 2;
TheList.Clear();
for (int i = 0; i < 4; i++)
{
System.Windows.Controls.Button newBtn = new Button();
newBtn.Content = i.ToString();
newBtn.Name = "Button" + i.ToString();
//TheList.Add(newBtn);
}
}
public void EightButton()
{
Rows = 2;
Columns = 4;
TheList.Clear();
for (int i = 0; i < 8; i++)
{
System.Windows.Controls.Button newBtn = new Button();
newBtn.Content = i.ToString();
newBtn.Name = "Button" + i.ToString();
//TheList.Add(newBtn);
}
}
}
public MainWindow()
{
DataContext = new ViewModelTest();
InitializeComponent();
}
}
} 为什么图表不显示?如果我添加按钮,它工作正常。我也尝试过使用模板,但是没有效果。
最佳答案
要显示绘图,您需要两件事:
在您后面的代码中,我看到您创建并填充了 PlotModel
。但是,我没有在您的 XAML 中看到任何知道如何呈现 PlotModel
的 PlotView
。尝试在 XAML 中向 ItemsControl
添加以下或类似代码(虽然我没有测试它):
<ItemsControl.ItemTemplate>
<DataTemplate>
<oxy:PlotView Model="{Binding}"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
您还应该定义 waht is oxy 例如:xmlns:oxy="http://oxyplot.org/wpf
另见 this示例供引用。
关于c# - OxyPlot 添加 PlotModel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29277481/
我有一个 oxyplot 图,它偶尔会抛出异常并将其显示给我的用户,但它不会冒泡到我的应用程序。有没有办法附加到抛出此异常时发生的事件?或者通过其他方式冒泡异常,以便我可以看到它是什么并适本地处理它?
我正在使用 OxyPlot 导出绘图。 当我导出它们时,我想为这些图添加一个页脚,其中包含保存路径、时间戳等信息... 现在,我通过在不同的位置层上创建一个额外的 X 轴,然后将所有刻度和标签的大小设
我在 Oxyplot 热图小部件的边缘看到了空间。我想让 X0、X1、Y0、Y1 绘制在热图 Canvas 的最边缘,即没有边距和填充。 OxyPlot 的 HeatMapSeries 如何做到这一点
我对 OxyPlot 有如下问题: 我创建了一个新的 PlotView 并在我的程序启动时附加了一个带有一些轴的 PlotModel。 在我的程序中,用户可以打开一个文件,该文件在 PlotView
我一直在将 OxyPlot 用于我目前正在进行的项目之一,并且效果非常好。但是,我一直无法解决在一个窗口中绘制多个图形的问题。我的目标是能够做类似 this 的事情. 我当前的单图看起来像 this
有谁知道如何更改氧绘图上分割标记的颜色?我似乎无法在任何地方找到该特定属性。这是我用来生成下图的代码。如您所见,分割标记是黑色的。真想换个颜色。谢谢。 最佳答案 您要查
我正在为 WPF 寻找一个简单、免费的图表控件。经过一番阅读(例如 WPF chart controls ),我查看了 OxyPlot:http://oxyplot.codeplex.com/ 它看起
我正在寻找 oxyplot 已经实现的所有快捷方式功能的列表! 像 A == 重置Ctrl + 鼠标左键...等。 最佳答案 我猜这个文档就是您正在寻找的内容,但它目前标有“TODO”,所以可能不完整
我想用 oxyplot 绘制如下图所示的图表,问题是我不知道如何在值 50 处绘制轴(带值)。 代码: var model = new PlotModel { Title = "Ell
有没有办法管理图例中的项目?我的意思是从图例中删除一些项目而不是从整个情节中删除?我知道情节中的每个系列都与图例中的一个项目相关联,但我想打破这个规则,只将选定的系列放到图例中。 感谢您的请求。 最佳
最近我一直在使用 OxyPlot 库制作一些图表。我想知道我是否可以为每个矩形制作一个带有注释的热图。期待答案。 最佳答案 我终于发现我需要创建一个新类并扩展热图系列并覆盖 RenderLabels
AutoScale OxyPlot 图表。例如我有这样的东西。 using OxyPlot; using OxyPlot.Axes; using System; using System.Collec
当缩小图表时,蜡烛开始与另一根蜡烛重叠。 例如 轴 DateTimeAxis timeSPanAxis1 = new DateTimeAxis() {
我想对 LineSeries 执行一个简单的仿射变换 不幸的是我不能简单地这样做: foreach (var point in myLineSeries.Points) { point.X =
我想使用 OXYPLOT 库添加多个具有共享 x 轴的绘图。示例代码如下,设置了4个不同的y轴共享同一个x轴。但是我只能在第一个 x&y 轴上绘制数据,而不能在其他轴上绘制数据。任何类型的建议将不胜感
我必须在 WPF 项目中实现一个简单的柱形图输出。我为此选择了 OxyPlot 库。设计模式当然是MVVM。相关源码部分见下。当我运行该项目时,我得到的是一个空图表,x 轴上有类别 1 到 5(这是正
我有一个 WPF 应用程序,我在其中使用 OxyPlot 绘制图表。我不断地向图表中的线系列添加点。 X 轴是一个日期时间轴,其间隔类型设置为秒。点被连续添加到线系列中。当第一个点和最后一个点之间的时
我想创建一个没有任何轴可见的 Oxyplot View 。 谁能告诉我怎么做? 为避免误解,我从未向绘图模型添加任何轴。 这段代码已经添加了坐标轴。如何避免显示它们? C# plot
我正在为我的 Xamarin.iOS 项目使用 Oxyplot 来绘制条形图 这是我目前的情节 这里我需要隐藏右轴和上轴 我试过了: model.Axes.Add(new LinearAxis() {
我想在具有对数 y 尺度的柱状图中可视化 1024 个值。使用线性标度它工作正常,但是使用对数标度图形看起来很奇怪。我的代码或 oxyplot 中是否存在错误? 我的主干图是这样的: reversed
我是一名优秀的程序员,十分优秀!