2

ComboBox があり、境界線の色を赤に変更して、必須フィールドとしてマークしたいと考えています。この ComboBox 列をコードを通じて動的に生成しています。境界線の色を変更するために設定する必要があるプロパティは何ですか?

  DataGridTemplateColumn dataGridComboBoxTemplateColumnObj = new DataGridTemplateColumn();
  dataGridComboBoxTemplateColumnObj.Header = column.Header;
  FrameworkElementFactory comboBoxFactory = new FrameworkElementFactory(typeof(ComboBox));
  Binding bindingItemSourceObj = new Binding(column.ItemsSourcePropertyName);
  comboBoxFactory.SetValue(ComboBox.HorizontalAlignmentProperty, HorizontalAlignment.Stretch);
  comboBoxFactory.SetValue(ComboBox.ItemsSourceProperty, bindingItemSourceObj);              
  comboBoxFactory.SetValue(ComboBox.SelectedValuePathProperty, column.ValuePropertyName);

  Binding selectedValueBindingObj = new Binding(column.PropertyName);
  selectedValueBindingObj.Mode = BindingMode.TwoWay;
  selectedValueBindingObj.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged;
  comboBoxFactory.SetValue(ComboBox.SelectedValueProperty, selectedValueBindingObj);
  dataGridComboBoxTemplateColumnObj.CellTemplate = new DataTemplate();
  dataGridComboBoxTemplateColumnObj.CellTemplate.VisualTree = comboBoxFactory;
  dataGridColumnObj = dataGridComboBoxTemplateColumnObj;
4

1 に答える 1

2

あなたが持っている場合ComboBox

<ComboBox x:Name="MyComboBox"/>

次の値を設定するだけですBorder.BorderBrushProperty

MyComboBox.SetValue(Border.BorderBrushProperty, Brushes.Red);

このようにして、の境界線の色を正確ComboBoxに赤に変更します。

編集:私はあなたの特定のためにこの例を追加しましたFrameworkElementFactory

FrameworkElementFactory comboBoxFactory = new FrameworkElementFactory(typeof(ComboBox));
comboBoxFactory.SetValue(Border.BorderBrushProperty, Brushes.Red);

ControlTemplate ct = new ControlTemplate(typeof(ComboBox));
ct.VisualTree = comboBoxFactory;
MyComboBox.Template = ct;
于 2012-06-06T06:26:01.260 に答える