private void CloseButton_Click(object sender, RoutedEventArgs e) { RackCableManager.RemoveRack(this); ContainingPanel.Children.Remove(this); RackItem?.CleanUp(); }
public RackItemContainer(RackCableManager rackCableManager, RackArrayWindow rackArray, IRackItem rackItem, MouseEventHandler mouseMovePreviewEventHandler) { InitializeComponent(); var desc = DependencyPropertyDescriptor.FromProperty(AdditionalContentProperty, typeof(UserControl)); desc.AddValueChanged(this, ContentPropertyChanged); RackCableManager = rackCableManager; RackCableManager.AddRack(this); ContainingPanel = rackArray.GetRackStackPanel(); RackItem = rackItem; ContainingPanel.Children.Add(this); AdditionalContent = rackItem; _dragItemEventHandler = mouseMovePreviewEventHandler; InputsPanel.PreviewMouseMove += RackItemMouseMoveForDragging; OutputsPanel.PreviewMouseMove += RackItemMouseMoveForDragging; InputsGrid.PreviewMouseMove += RackItemMouseMoveForDragging; OutputsGrid.PreviewMouseMove += RackItemMouseMoveForDragging; BackgroundGrid.MouseDown += BackgroundGridOnMouseDown; }
private void ContentPropertyChanged(object sender, EventArgs e) { var rack = sender as RackItemContainer; if (sender == null) { return; } var rackItem = rack?.AdditionalContent as IRackItem; if (rackItem == null) { return; } var userControl = rack.AdditionalContent as UserControl; if (userControl == null) { return; } ItemNameLabel.Content = rackItem.ItemName; ContentRow.Height = new GridLength(double.IsNaN(userControl.Height) ? 0.0 : userControl.Height); foreach (var input in rackItem.GetInputs()) { var inputSelector = new ComboBox(); inputSelector.SelectionChanged += RackCableManager.InputSelectorSelectionChanged; inputSelector.Tag = input; inputSelector.Margin = new Thickness(1, 0, 5, 1); inputSelector.Width = 100; inputSelector.FontSize = 10; inputSelector.HorizontalContentAlignment = HorizontalAlignment.Center; inputSelector.VerticalContentAlignment = VerticalAlignment.Center; inputSelector.ItemsSource = RackCableManager.AllRackItemOutputs; _inputComboBoxs.Add(inputSelector); InputsPanel.Children.Add(inputSelector); } foreach (var output in rackItem.GetOutputs()) { var outputTextBox = new TextBox { Text = output.VisibleName, FontSize = 10, Width = 100, Margin = new Thickness(1, 1, 5, 1), Background = Brushes.Transparent, HorizontalContentAlignment = HorizontalAlignment.Center, VerticalContentAlignment = VerticalAlignment.Center, Tag = output }; outputTextBox.TextChanged += RackCableManager.OutputTextBoxTextChanged; OutputsPanel.Children.Add(outputTextBox); } CloseButton.Visibility = rackItem.CanDelete() ? Visibility.Visible : Visibility.Hidden; rackItem.SetRack(this); RackCableManager.RackContentSet(this); }
public void OutputPipe(RackItemOutput output, List <byte> data) { RackCableManager.OutputPipe(output, data); }