コンボボックスは編集できませんが、私は試しました:
TextBox TxtBox = (TextBox)myCombo.Template.FindName("PART_EditableTextBox", myCombo);
しかし、それはヌルになります。
私はそれをWindows xamlに追加しようとしました:
<Style TargetType="{x:Type ComboBox}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type TextBox}">
<Border x:Name="PART_EditableTextBox" Focusable="True" Background="{TemplateBinding Background}" />
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
しかし、System.Windows.Markup.XamlParseException が発生しました:
Set property 'System.Windows.ResourceDictionary.DeferrableContent' threw an exception.
コンボボックスを作成し、グリッド内の位置を設定するために使用するコードは次のとおりです。
public static System.Windows.Controls.ComboBox createNewComboBox(String newComboBoxName, SelectionChangedEventHandler selectionChangedEventHandler,RoutedEventHandler lostFocusEventHandler)
{
System.Windows.Controls.ComboBox newComboBox = new System.Windows.Controls.ComboBox();
newComboBox.Name = newComboBoxName;
if (selectionChangedEventHandler != null) newComboBox.SelectionChanged += selectionChangedEventHandler;
if (lostFocusEventHandler != null) newComboBox.LostFocus += lostFocusEventHandler;
return newComboBox;
}
public static void setNewControlLocation(System.Windows.Controls.Control control, Int32 rowIndex, Int32 columnIndex, Grid parent)
{
Grid.SetRow(control, rowIndex);
Grid.SetColumn(control, columnIndex);
parent.Children.Add(control);
}
これにより、コンボボックスのテキストボックスではなく、コンボボックスに失われたフォーカスが追加されます。
ユーザーがデータを選択して入力する行が 1 つあります。ユーザーは、プラス ボタンまたは画面の左側をクリックするか、F5 キーを使用して、さらに行を追加できます。行にはいくつかのコントロールが含まれており、そのうちの 1 つがコンボボックスです。特定の製品が選択されている場合、コンボボックスは製品名のリストをドロップダウンし、メッセージボックスを表示する必要があります。コードを SelectionChanged イベント ハンドラーに配置し、ユーザーがコンボ ボックスを検索すると、それを必要とする製品の 1 つを渡すたびにメッセージ ボックスが表示されます。メッセージボックスのコードをコンボボックスの lostfocus イベントハンドラに入れると、コンボボックスのテキストボックスをクリックしてウィンドウを閉じたときにコードが起動します。そのため、イベント ハンドラーをコンボ ボックスのテキスト ボックスにアタッチする方法を見つける必要があります。
これについて別の方法がある場合は、お知らせください。