2017-03-15 76 views
1

enter image description here IntervalBarSeriesに配置された独自のラベルテキストを設定しようとしていますが、醜いDateTime.ToDouble() - Valueのみが表示されます。 Title = "anyText"は何も影響しません。 アイデア次の問題は、IntervalBarSeriesは、Styleプロパティを持っていないこと、である...IntervalBarSeries(oxyplot)のラベルを設定する

MCVE:

XAML:

<Window x:Class="Label_Issue.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
     xmlns:local="clr-namespace:Label_Issue" 
     xmlns:oxy="http://oxyplot.org/wpf" 
     mc:Ignorable="d" 
     Title="MainWindow" Height="350" Width="525"> 
    <Grid> 
     <oxy:PlotView x:Name="barChartModel"/> 
    </Grid> 
</Window> 

は.cs:

using OxyPlot; 
using OxyPlot.Axes; 
using OxyPlot.Series; 
using System; 
using System.Collections.Generic; 
using System.Collections.ObjectModel; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
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; 

namespace Label_Issue 
{ 
    /// <summary> 
    /// Interaktionslogik für MainWindow.xaml 
    /// </summary> 
    public partial class MainWindow : Window 
    { 
     public MainWindow() 
     { 
      InitializeComponent(); 

      SetUtilizationData(); 
     } 

     public PlotModel PlotModel { get; set; } 
     private void SetUtilizationData() 
     { 
      PlotModel = new PlotModel 
      { 
       LegendOrientation = LegendOrientation.Vertical, 
       LegendPlacement = LegendPlacement.Outside, 
       LegendPosition = LegendPosition.RightTop 
      }; 


      // define x-axis 
      OxyPlot.Axes.DateTimeAxis dateAxis = new OxyPlot.Axes.DateTimeAxis 
      { 
       Position = OxyPlot.Axes.AxisPosition.Bottom, 
       //StringFormat = "dd/MM/yy HH:mm"   // automatisch? 
      }; 

      // add to plotmodel.axes 
      PlotModel.Axes.Add(dateAxis); 


      // define y-axis 
      CategoryAxis categoryAxis = new CategoryAxis 
      { 
       Position = AxisPosition.Left, 
      }; 

      //add to plotmodel.axes 
      PlotModel.Axes.Add(categoryAxis); 

      IntervalBarSeries barSeries = new OxyPlot.Series.IntervalBarSeries 
      { 
       LabelMargin = 0, 
       LabelFormatString = "{0:.0}", 
      }; 

      TestData td = new TestData(); 
      foreach (TestDataItem data in td) 
      { 
       IntervalBarItem item = new IntervalBarItem 
       { 
        Start = OxyPlot.Axes.DateTimeAxis.ToDouble(data.start), 
        End = OxyPlot.Axes.DateTimeAxis.ToDouble(data.end), 
        CategoryIndex = 0, 
        Title = "test" 
       }; 
       barSeries.Items.Add(item); 
      } 

      PlotModel.Series.Add(barSeries); 
      barChartModel.Model = PlotModel; 
     } 
    } 
    public class TestData : ObservableCollection<TestDataItem> 
    { 
     public TestData() 
     { 
      Add(new TestDataItem() 
      { 
       start = new DateTime(2017, 04, 01, 06, 00, 00), 
       end = new DateTime(2017, 04, 01, 06, 30, 00), 
      }); 
     } 
    } 
    public class TestDataItem 
    { 

     public DateTime start { get; set; } 
     public DateTime end { get; set; } 
    } 
} 
+0

「MCVE」を提供できますか? –

+0

私は1つのbarItemとMCVEを追加しました –

+0

私は[WPFチャット](http://chat.stackoverflow.com/rooms/18165/wpf) –

答えて

1

あなたはこの結果を得る、なぜならLabelFormatStringの形式を変更しました:

IntervalBarSeries barSeries = new OxyPlot.Series.IntervalBarSeries 
{ 
    LabelMargin = 0, 
    LabelFormatString = "{0:.0}", 
}; 
デフォルト LabelFormatStringによって

は価値があります。{2}Title

ので、それを削除して、正しい結果を得ることができます。

IntervalBarSeries barSeries = new OxyPlot.Series.IntervalBarSeries 
{ 
    LabelMargin = 0 
}; 
+0

ありがとうとても ! –

関連する問題