X-Git-Url: http://git.osdn.jp/view?a=blobdiff_plain;ds=sidebyside;f=dev3%2Fpsychlops%2Fextention%2Fstandard%2Fwidget.cs;h=bb540ecc46829bc31015b026be280da81b108908;hb=e22f217b876609c575411512e127062c35d49441;hp=21229f46519132b4b57585aa43d73025ccc242fe;hpb=de61bd82025b7cbad753e4b9ea272705ed47cbf6;p=psychlops%2Fsilverlight.git diff --git a/dev3/psychlops/extention/standard/widget.cs b/dev3/psychlops/extention/standard/widget.cs index 21229f4..bb540ec 100644 --- a/dev3/psychlops/extention/standard/widget.cs +++ b/dev3/psychlops/extention/standard/widget.cs @@ -13,5 +13,85 @@ using System.Windows.Shapes; namespace Psychlops { + namespace Widgets + { + + public class Slider + { + internal System.Windows.UIElement instance; + internal System.Windows.Controls.Slider uislider; + internal string label; + internal Interval range; + + public Slider(string l, Interval r) + { + range = r; + label = l; + Psychlops.Widgets.Connector.stackSlider(this); + } + public static implicit operator double(Slider s) + { + return s.value; + } + public double value { + get { return uislider.Value; } + set { if(uislider!=null) uislider.Dispatcher.BeginInvoke( new Action(Connector.sliderSet) , uislider, value ); } + } + public bool changed { get; set; } + } + + + + + internal static class Connector + { + delegate void StackSlider_(Slider s); + internal static void stackSlider(Slider s) + { + Internal.Main.widgetStack.Dispatcher.BeginInvoke(new StackSlider_(stackSlider__), s); + } + static void stackSlider__(Slider ss) + { + var holder = new System.Windows.Controls.Canvas { Width = 200 }; + var val = new System.Windows.Controls.TextBox { Width = 100 }; + System.Windows.Controls.Canvas.SetLeft(val, 100); + var slide = new System.Windows.Controls.Slider { + Minimum = ss.range.begin.val, Maximum = ss.range.end.val, + Name = ss.label, + Tag = ss, Width = 200, + }; + System.Windows.Controls.Canvas.SetTop(slide, 25); + var b = new System.Windows.Data.Binding { + Path = new PropertyPath("Value"), + Mode = System.Windows.Data.BindingMode.TwoWay, + Source = slide, + }; + val.SetBinding(TextBox.TextProperty, b); + ss.uislider = slide; + //var b2 = new System.Windows.Data.Binding + //{ + // Path = new PropertyPath("value"), + // Mode = System.Windows.Data.BindingMode.TwoWay, + // Source = ss, + //}; + //val.SetBinding(System.Windows.Controls.Slider.ValueProperty, b2); + var label = new System.Windows.Controls.TextBlock { Text = ss.label }; + System.Windows.Controls.Canvas.SetLeft(label, 3); + System.Windows.Controls.Canvas.SetTop(label, 3); + + holder.Children.Add(label); + holder.Children.Add(slide); + holder.Children.Add(val); + ss.instance = holder; + Internal.Main.widgetStack.Children.Add(ss.instance); + } + public static void sliderSet(System.Windows.Controls.Slider s, double v) + { + s.Value = v; + } + + } + + } } \ No newline at end of file