public void SetPropertyControl() { SetPropertyControlStatic("Assets Name", fontAssetMapCLI.assetsName); SetPropertyControlStatic("Asset Name", fontAssetMapCLI.assetName); SetPropertyControlStatic("Container Path", fontAssetMapCLI.containerPath); SetPropertyControlStatic("Use Container Path", fontAssetMapCLI.useContainerPath); for (int i = 0; i < fontAssetMapCLI.options.Count; i++) { AssetMapOptionCLI child = fontAssetMapCLI.options[i]; SetPropertyControlRecursive(ref child); } }
public void Refresh() { PropertiesStackPanel.Children.Clear(); if (AssetMapOptionCLIsGlobal != null) { for (int i = 0; i < AssetMapOptionCLIsGlobal.Count; i++) { AssetMapOptionCLI child = AssetMapOptionCLIsGlobal[i]; SetPropertyControlRecursive(ref child); } } return; }
private void Grid_DataContextChanged(object sender, DependencyPropertyChangedEventArgs e) { if (sender is Grid grid) { PropertiesStackPanel.Children.Clear(); if (grid.DataContext is List <AssetMapOptionCLI> assetMapOptionCLIs) { for (int i = 0; i < assetMapOptionCLIs.Count; i++) { AssetMapOptionCLI child = assetMapOptionCLIs[i]; SetPropertyControlRecursive(ref child); } } } }
private void OnPasteTextBox(object sender, DataObjectPastingEventArgs e) { var isText = e.SourceDataObject.GetDataPresent(DataFormats.UnicodeText, true); if (!isText) { return; } var text = e.SourceDataObject.GetData(DataFormats.UnicodeText) as string; TextBox textBox = sender as TextBox; Grid grid = textBox.Parent as Grid; AssetMapOptionCLI assetMapOptionCLI = grid.DataContext as AssetMapOptionCLI; e.CancelCommand(); assetMapOptionCLI.Value = text; OptionChanged(this, new DependencyPropertyChangedEventArgs()); }
public void SetPropertyControlRecursive(ref AssetMapOptionCLI fontAssetMapOptionCLI) { if (fontAssetMapOptionCLI.type == AssetMapOptionCLI.Type.OPTION_TYPE_NONE) { return; } Grid grid = new Grid { DataContext = fontAssetMapOptionCLI, Margin = new Thickness(5) }; grid.GotFocus += Grid_GotFocus; ColumnDefinition columnDefinition1 = new ColumnDefinition { Width = new GridLength(4, GridUnitType.Star) }; ColumnDefinition columnDefinition2 = new ColumnDefinition { Width = new GridLength(6, GridUnitType.Star) }; grid.ColumnDefinitions.Add(columnDefinition1); grid.ColumnDefinitions.Add(columnDefinition2); TextBlock textBlock1 = new TextBlock(); textBlock1.ToolTip = fontAssetMapOptionCLI.OptionName + "\r\n" + fontAssetMapOptionCLI.OptionDescription; Grid.SetColumn(textBlock1, 0); textBlock1.Text = fontAssetMapOptionCLI.OptionName; textBlock1.VerticalAlignment = VerticalAlignment.Center; grid.Children.Add(textBlock1); PropertiesStackPanel.Children.Add(grid); if (fontAssetMapOptionCLI.nestedOptions == null || fontAssetMapOptionCLI.nestedOptions.Count == 0) { Binding binding = new Binding("Value") { Mode = BindingMode.TwoWay }; switch (fontAssetMapOptionCLI.type) { case AssetMapOptionCLI.Type.OPTION_TYPE_STRING: TextBox textBox1 = new TextBox(); textBox1.SetBinding(TextBox.TextProperty, binding); Grid.SetColumn(textBox1, 1); grid.Children.Add(textBox1); break; case AssetMapOptionCLI.Type.OPTION_TYPE_INT: TextBox textBox2 = new TextBox(); textBox2.PreviewTextInput += TextBoxInteger_PreviewTextInput; textBox2.SetBinding(TextBox.TextProperty, binding); Grid.SetColumn(textBox2, 1); grid.Children.Add(textBox2); break; case AssetMapOptionCLI.Type.OPTION_TYPE_DOUBLE: TextBox textBox3 = new TextBox(); textBox3.PreviewTextInput += TextBoxDouble_previewTextInput; textBox3.SetBinding(TextBox.TextProperty, binding); Grid.SetColumn(textBox3, 1); grid.Children.Add(textBox3); break; case AssetMapOptionCLI.Type.OPTION_TYPE_BOOL: CheckBox checkBox1 = new CheckBox(); checkBox1.SetBinding(CheckBox.IsCheckedProperty, binding); Grid.SetColumn(checkBox1, 1); grid.Children.Add(checkBox1); break; } } else { Binding binding = new Binding("Value") { Mode = BindingMode.TwoWay }; switch (fontAssetMapOptionCLI.type) { case AssetMapOptionCLI.Type.OPTION_TYPE_STRING: ComboBox comboBox1 = new ComboBox(); Grid.SetColumn(comboBox1, 1); List <string> vs1 = new List <string>(); foreach (AssetMapOptionCLI fontAssetMapOptionCLIChild in fontAssetMapOptionCLI.nestedOptions) { if (fontAssetMapOptionCLIChild.ValueAsChild != null) { vs1.Add((string)fontAssetMapOptionCLIChild.ValueAsChild); } } comboBox1.ItemsSource = vs1; comboBox1.SetBinding(ComboBox.SelectedItemProperty, binding); grid.Children.Add(comboBox1); if (fontAssetMapOptionCLI.Value != null) { string valueAsChild = (string)fontAssetMapOptionCLI.Value; int findIndex = fontAssetMapOptionCLI.nestedOptions.FindIndex(x => (string)x.ValueAsChild == valueAsChild); if (findIndex > -1) { AssetMapOptionCLI found = fontAssetMapOptionCLI.nestedOptions[findIndex]; comboBox1.SelectedItem = (string)(found).ValueAsChild; SetPropertyControlRecursive(ref found); } else { comboBox1.IsEditable = true; comboBox1.IsReadOnly = true; comboBox1.Text = "(Select " + fontAssetMapOptionCLI.OptionName + ")"; } } else { comboBox1.IsEditable = true; comboBox1.IsReadOnly = true; comboBox1.Text = "(Select " + fontAssetMapOptionCLI.OptionName + ")"; } comboBox1.SelectionChanged += ComboBox_SelectionChanged; break; case AssetMapOptionCLI.Type.OPTION_TYPE_INT: ComboBox comboBox2 = new ComboBox(); comboBox2.SetBinding(ComboBox.SelectedItemProperty, binding); Grid.SetColumn(comboBox2, 1); List <int> vs2 = new List <int>(); foreach (AssetMapOptionCLI fontAssetMapOptionCLIChild in fontAssetMapOptionCLI.nestedOptions) { if (fontAssetMapOptionCLIChild.ValueAsChild != null) { vs2.Add((int)fontAssetMapOptionCLIChild.ValueAsChild); } } comboBox2.ItemsSource = vs2; comboBox2.SetBinding(ComboBox.SelectedItemProperty, binding); grid.Children.Add(comboBox2); if (fontAssetMapOptionCLI.Value != null) { int valueAsChild = (int)fontAssetMapOptionCLI.Value; int findIndex = fontAssetMapOptionCLI.nestedOptions.FindIndex(x => (int)x.ValueAsChild == valueAsChild); if (findIndex > -1) { AssetMapOptionCLI found = fontAssetMapOptionCLI.nestedOptions[findIndex]; comboBox2.SelectedItem = (int)(found).ValueAsChild; SetPropertyControlRecursive(ref found); } else { comboBox2.IsEditable = true; comboBox2.IsReadOnly = true; comboBox2.Text = "(Select " + fontAssetMapOptionCLI.OptionName + ")"; } } else { comboBox2.IsEditable = true; comboBox2.IsReadOnly = true; comboBox2.Text = "(Select " + fontAssetMapOptionCLI.OptionName + ")"; } comboBox2.SelectionChanged += ComboBox_SelectionChanged; break; case AssetMapOptionCLI.Type.OPTION_TYPE_DOUBLE: ComboBox comboBox3 = new ComboBox(); comboBox3.SetBinding(ComboBox.SelectedItemProperty, binding); Grid.SetColumn(comboBox3, 1); List <double> vs3 = new List <double>(); foreach (AssetMapOptionCLI fontAssetMapOptionCLIChild in fontAssetMapOptionCLI.nestedOptions) { if (fontAssetMapOptionCLIChild.ValueAsChild != null) { vs3.Add((double)fontAssetMapOptionCLIChild.ValueAsChild); } } comboBox3.ItemsSource = vs3; comboBox3.SetBinding(ComboBox.SelectedItemProperty, binding); grid.Children.Add(comboBox3); if (fontAssetMapOptionCLI.Value != null) { double valueAsChild = (double)fontAssetMapOptionCLI.Value; int findIndex = fontAssetMapOptionCLI.nestedOptions.FindIndex(x => (double)x.ValueAsChild == valueAsChild); if (findIndex > -1) { AssetMapOptionCLI found = fontAssetMapOptionCLI.nestedOptions[findIndex]; comboBox3.SelectedItem = (int)(found).ValueAsChild; SetPropertyControlRecursive(ref found); } else { comboBox3.IsEditable = true; comboBox3.IsReadOnly = true; comboBox3.Text = "(Select " + fontAssetMapOptionCLI.OptionName + ")"; } } else { comboBox3.IsEditable = true; comboBox3.IsReadOnly = true; comboBox3.Text = "(Select " + fontAssetMapOptionCLI.OptionName + ")"; } comboBox3.SelectionChanged += ComboBox_SelectionChanged; break; case AssetMapOptionCLI.Type.OPTION_TYPE_BOOL: CheckBox checkBox1 = new CheckBox(); checkBox1.SetBinding(CheckBox.IsCheckedProperty, binding); Grid.SetColumn(checkBox1, 1); grid.Children.Add(checkBox1); if (fontAssetMapOptionCLI.Value != null) { bool valueAsChild = (bool)fontAssetMapOptionCLI.Value; int findIndex = fontAssetMapOptionCLI.nestedOptions.FindIndex(x => (bool)x.ValueAsChild == valueAsChild); if (findIndex > -1) { AssetMapOptionCLI found = fontAssetMapOptionCLI.nestedOptions[findIndex]; checkBox1.IsChecked = (bool)(found).ValueAsChild; SetPropertyControlRecursive(ref found); } else { checkBox1.IsChecked = false; } } else { checkBox1.IsChecked = false; } checkBox1.Checked += CheckBox_Checked; checkBox1.Unchecked += CheckBox_Checked; break; } } }