Hallo zusammen,
ich habe leider noch ein Anliegen, und damit hoffentlich das letzte.. dann dürfte ich erstmal soweit durch sein, mit dem was ich vor hab. Bzw. es sind genau genommen 2 Sachen:
1. ich arbeite mit <chartingToolkit:ColumnSeries> und das klappt auch vorzüglich, jedoch möchte ich die Vertikale Achse von 0 bis 100% beschriften oder von mir aus von 0 bis 100 (ohne %), egal welche werte meine columns haben. aktuell ist es so, das er einfach den höchsten wert nimmt, und das auf die skala anpasst. da sich die werte aber ändern, und das ding dynamisch bleiben soll, muss die y achse fest beschriftet sein!
2. wie erwähnt ändern sich die daten. es werden alle 5 sekunden neue daten reingeholt (xmlrequest) und angezeigt.. klappt auch sehr schön, allerdings wird das diagramm bei jedem refresh neu aufgebaut. wie kann ich ohne refresh die daten an das diagramm binden, das die veränderungen durch bewegung der balken angezeigt wird??
soweit zur theorie! und hier noch ein bisschen code:
xaml:
<UserControl<br />
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"<br />
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"<br />
xmlns:controls="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls"<br />
xmlns:chartingToolkit="clr-namespace:System.Windows.Controls.DataVisualization.Charting;assembly=System.Windows.Controls.DataVisualization.Toolkit" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"<br />
x:Class="Silverlight_test.MainPage"<br />
Width="640" Height="480" mc:Ignorable="d"></p>
<p> <Grid x:Name="LayoutRoot" Background="White"><br />
<controls:TabControl Margin="8"><br />
<controls:TabControl.Background><br />
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"><br />
<GradientStop Color="White" Offset="0"/><br />
<GradientStop Color="#FFA79B9B" Offset="1"/><br />
</LinearGradientBrush><br />
</controls:TabControl.Background><br />
<controls:TabItem x:Name="tab1" Header="TabItem"><br />
<Grid></p>
<p> <chartingToolkit:Chart x:Name="chart1" Margin="8" Title="CPU - Auslastung"><br />
<chartingToolkit:ColumnSeries ItemsSource="{Binding}"<br />
DependentValuePath="Value"<br />
IndependentValuePath="Key"<br />
AnimationSequence="FirstToLast"<br />
Title="CPU-Auslastung" IsSelectionEnabled="True" /><br />
</chartingToolkit:Chart></p>
<p> </Grid><br />
</controls:TabItem><br />
<controls:TabItem x:Name="Tab2" Header="TabItem"><br />
<Grid><br />
<chartingToolkit:Chart Margin="8" x:Name="chart2"><br />
<chartingToolkit:Chart.Series><br />
<chartingToolkit:PieSeries ItemsSource="{Binding}"<br />
DependentValuePath="Value"<br />
IndependentValuePath="Key"<br />
AnimationSequence="FirstToLast"<br />
Title="Fluggesellschaften" IsSelectionEnabled="True" Margin="8,8,10,10" /><br />
</chartingToolkit:Chart.Series><br />
</chartingToolkit:Chart></p>
<p> </Grid><br />
</controls:TabItem><br />
</controls:TabControl></p>
<p> </Grid><br />
</UserControl>
der Service (Auszug):
<br />
public class service<br />
{<br />
private String uriString = "";<br />
private System.Windows.Controls.DataVisualization.Charting.Chart chart;</p>
<p> private KeyValuePair<string, int>[] cpuResult = new KeyValuePair<string, int>[3];</p>
<p> public service(String URL, System.Windows.Controls.DataVisualization.Charting.Chart chart)<br />
{<br />
uriString = URL;<br />
this.chart = chart;</p>
<p>.......</p>
<p>XElement myElem = doc.Element("cpu");</p>
<p> int i = 0;<br />
foreach (XElement item in myElem.Elements())<br />
{<br />
Debug.WriteLine("item.Name: " + item.Name);<br />
Debug.WriteLine("item.Value: " + item.Value);<br />
Debug.WriteLine(i);</p>
<p> try<br />
{<br />
cpuResult.SetValue(new KeyValuePair<string, int>("" + item.Name, int.Parse(item.Value)), i);<br />
}<br />
catch (Exception exc)<br />
{<br />
Debug.WriteLine("Falscher Wert in: " + item.Name);<br />
continue;<br />
}<br />
i++;<br />
}</p>
<p> chart.DataContext = cpuResult;<br />
chart.Refresh();</p>
<p>........<br />
und die Mainklasse:
<br />
public partial class MainPage : UserControl<br />
{<br />
// XML Services<br />
service cpuService;</p>
<p> public MainPage()<br />
{<br />
// Für das Initialisieren der Variablen erforderlich<br />
InitializeComponent();</p>
<p> cpuService = new service("http://localhost/cpu.xml", this.chart1);</p>
cpuService.lesenMitRequest();</p>
<p> // Timer<br />
DispatcherTimer tmr = new DispatcherTimer();<br />
tmr.Interval = TimeSpan.FromSeconds(5.00);<br />
tmr.Tick += new EventHandler(tmr_Tick);<br />
tmr.Start();<br />
}</p>
<p> void tmr_Tick(object sender, EventArgs e)<br />
{<br />
cpuService.lesenMitRequest();<br />
}<br />
für weitere Infos bitte fragen!
Ich hoffe mir kann jemand helfen...
mfg