using Bro.Common.ImageCanvas; using System; using System.Collections.Generic; using System.Globalization; 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; using Bro.UI.ViewModel; using Xceed.Wpf.AvalonDock; namespace Bro.UI { /// /// RunningView.xaml 的交互逻辑 /// public partial class RunningView : UserControl { RunningViewModel VM = null; public RunningView() { InitializeComponent(); this.Loaded += (s, e) => { VM = this.DataContext as RunningViewModel; CreateLayoutDocument(); VM.Images.CollectionChanged += Images_CollectionChanged; }; } private void Images_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e) { CreateLayoutDocument(); } private void CreateLayoutDocument() { layOutPanes.Children.Clear(); VM.Images.ToList().ForEach(imgModel => { Xceed.Wpf.AvalonDock.Layout.LayoutDocumentPane pane = new Xceed.Wpf.AvalonDock.Layout.LayoutDocumentPane(); Xceed.Wpf.AvalonDock.Layout.LayoutDocument doc = new Xceed.Wpf.AvalonDock.Layout.LayoutDocument(); doc.ContentId = doc.Title = imgModel.CameraName; doc.CanClose = false; doc.CanFloat = doc.CanMove = true; ImageCanvas imgCanvas = new ImageCanvas(); imgCanvas.DataContext = imgModel; Binding imgBind = new Binding("Image"); imgBind.Mode = BindingMode.OneWay; imgCanvas.SetBinding(ImageCanvas.ImageSourceProperty, imgBind); Binding shapeBind = new Binding("Shapes"); shapeBind.Mode = BindingMode.OneWay; imgCanvas.SetBinding(ImageCanvas.ShapeListProperty, shapeBind); doc.Content = imgCanvas; pane.Children.Add(doc); layOutPanes.Children.Add(pane); }); } } }