WPF ToolKit and CodePlex WPF Extension
<Window x:Class="GMO.Monitor.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"
xmlns:chartingToolkit="clr-namespace:System.Windows.Controls.DataVisualization.Charting;assembly=System.Windows.Controls.DataVisualization.Toolkit"
xmlns:dv="clr-namespace:System.Windows.Controls.DataVisualization;assembly=System.Windows.Controls.DataVisualization.Toolkit"
xmlns:tc="clr-namespace:TreeContainer;assembly=TreeContainer"
xmlns:wpfec="clr-namespace:WPFExtensions.Controls;assembly=WPFExtensions"
x:Name="M"
>
<Grid >
<!--<WrapPanel>-->
<DockPanel>
<dv:TreeMap Name="tmp1" Height="Auto" Width="200" >
<dv:TreeMap.Interpolators>
<dv:SolidColorBrushInterpolator
TargetName="bdr"
TargetProperty="Background"
DataRangeBinding="{Binding Path=totalValue}"
From="Green"
To="White"/>
</dv:TreeMap.Interpolators>
<dv:TreeMap.ItemDefinition>
<dv:TreeMapItemDefinition
ItemsSource="{Binding}"
ValueBinding="{Binding Path=totalValue}"
>
<DataTemplate>
<Border BorderThickness="1" BorderBrush="Black" Name="bdr" MouseDown="bdr_MouseDown" ToolTip="{Binding Path=ToolTip}" >
<TextBlock Text="{Binding Path=shortname}" VerticalAlignment="Center" Margin="2,2,0,0" FontSize="10" />
</Border>
</DataTemplate>
</dv:TreeMapItemDefinition>
</dv:TreeMap.ItemDefinition>
</dv:TreeMap>
<wpfec:ZoomControl >
<Grid Width="1000" Height="1000" Background="Beige">
<Canvas>
<tc:TreeContainer tc:TreeContainer.Root="O" HorizontalAlignment="Center" VerticalAlignment="Center" x:Name="tc1" HorizontalBuffer="38" VerticalBuffer="48" HorizontalBufferSubtree="40" VerticalJustification="top">
</tc:TreeContainer>
</Canvas>
</Grid>
</wpfec:ZoomControl>
</DockPanel>
<!--</WrapPanel>-->
</Grid>
</Window>
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.Windows.Controls.DataVisualization.Charting;
using System.Windows.Controls.DataVisualization;
using GMO.Monitor.Model;
using TreeContainer;
using System.Collections.ObjectModel;
namespace GMO.Monitor
{
///
/// Interaction logic for MainWindow.xaml
///
public partial class MainWindow : Window
{
ApexDevEntities ctx = new ApexDevEntities();
public MainWindow()
{
InitializeComponent();
var q = from t in ctx.GetDashboard() select new { t.shortname, t.totalValue, t.groupid, ToolTip = t.shortname + "," + t.groupid.ToString() };
tmp1.ItemsSource = q;
}
protected override void OnRenderSizeChanged(SizeChangedInfo sizeInfo)
{
//vb.Width = this.ActualWidth - tmp1.ActualWidth; ;
//vb.Height = this.ActualHeight - tmp1.ActualHeight;
base.OnRenderSizeChanged(sizeInfo);
}
private void bdr_MouseDown(object sender, MouseButtonEventArgs e)
{
if (e.ClickCount <= 1) return;
Border bdr = sender as Border;
string tip = bdr.ToolTip.ToString();
int GrpId = Convert.ToInt32(tip.Split(',')[1]);
TextBlock tb = bdr.Child as TextBlock;
tc1.Clear();
TreeNode root= tc1.AddRoot(tb.Text);
var q = from t in ctx.CustomGroups where t.RelatedGroupId == GrpId select t;
foreach (var q1 in q)
{
TextBlock tb1 = new TextBlock() { Text = q1.CustomGroupName};
TreeNode tn= tc1.AddNode(tb1, root);
tn.Tag = q.FirstOrDefault();
// tn.MouseDoubleClick += new MouseButtonEventHandler(tn_MouseDoubleClick);
// TreeNode tn = sender as TreeNode;
DateTime dt = new DateTime(2011, 2, 1);
string subCGstr = "a,0,b,1,c,2";
var q2 = from t in ctx.GetCustomGroupExposures(dt, q1.CustomGroupId, true, subCGstr) select t;
foreach (var q3 in q2)
{
TextBlock tb3 = new TextBlock() { Text = q3.Bet + "\r\n " + q3.Exposure.ToString() + "\r\n " + q3.PercentExposure.ToString() };
TreeNode tn1 = tc1.AddNode(tb3, tn);
}
}
}
void tn_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
tc1.Clear();
TreeNode tn = sender as TreeNode;
CustomGroup cg = tn.Tag as CustomGroup;
TextBlock tb= new TextBlock() { Text= cg.CustomGroupName};
TreeNode root = tc1.AddRoot(tb);
DateTime dt = new DateTime(2011,2,1);
var q = from t in ctx.GetCustomGroupExposures(dt, cg.CustomGroupId, true, "") select t;
foreach (var q1 in q)
{
TextBlock tb1 = new TextBlock() { Text = q1.Bet+" "+q1.Exposure.ToString() +" "+q1.PercentExposure.ToString() };
TreeNode tn1 = tc1.AddNode(tb1, root);
}
}
}
public class Data1
{
public string shortname { get; set; }
public double totalValue { get; set; }
}
}
Thursday, May 26, 2011
TreeMap and Zoom Control onto TreeGraph (WPF Toolkit and Extension)
Subscribe to:
Posts (Atom)