サービスからのデータモデルの詳細に基づいてデータエントリWPF DataGrid
を動的に作成しています。私がするこれらのことの1つは、ユーザが例えば、から選択できるコンボボックスを定義することである。国GridColumn.CellTemplateを使用しているときにタブのフォーカスが機能しない
私はプログラム的にDataTemplate
を定義し、次のように定義された実際のDataTemplateでGridColumn.CellTemplate
colToAdd = new GridColumn
{
FieldName = field.name,
Binding = new Binding { Path = new PropertyPath(string.Format("Order.OrderData[{0}]", field.name)), Mode = BindingMode.TwoWay },
Header = GridCreationHelper.GenerateColumnHeader(field),
HeaderToolTip = string.Format("Order - {0}", myTI.ToTitleCase(field.name.ExpandTitleCaseToWords())),
VisibleIndex = colIndex,
AllowEditing = DefaultBoolean.True,
AllowGrouping = DefaultBoolean.True,
CellTemplate = GridCreationHelper.GenerateComboBoxDataTemplate(ViewModel.SelectedOrderType, field.name, View.Name, ViewModel.ComboBoxValues[ViewModel.SelectedOrderType][field.name].Count),
HeaderStyle = GridCreationHelper.IsFieldMandatory(field) ? View.Resources["OrderEntryMandatoryHeaderStyle"] as Style : null,
AllowFocus = true
};
に設定しています:
public static DataTemplate GenerateComboBoxDataTemplate(OrderType orderType, string columnName, string viewName, int comboBoxCount)
{
string selectedIndexMarkup = comboBoxCount == 1 ? " SelectedIndex=\"0\"" : string.Empty;
string markup =
string.Format(@"<DataTemplate xmlns=""http://schemas.microsoft.com/winfx/2006/xaml/presentation""
xmlns:dxe=""http://schemas.devexpress.com/winfx/2008/xaml/editors"" xmlns:Key=""ComboBoxEditDataTemplate"">
<dxe:ComboBoxEdit xmlns:Name=""PART_Editor"" IsTabStop=""True"" Focusable=""True"" ImmediatePopup=""True"" IsTextEditable=""False"" SelectAllOnGotFocus=""True""
ItemsSource=""{{Binding Path=ViewModel.ComboBoxValues[{0}][{1}], ElementName={2}}}"" SelectedItem=""{{Binding Path=RowData.Row.Order.OrderData[{1}]}}""{3} />
</DataTemplate>", orderType, columnName, viewName, selectedIndexMarkup);
StringReader stringReader = new StringReader(markup);
XmlReader xmlReader = XmlReader.Create(stringReader);
return XamlReader.Load(xmlReader) as DataTemplate;
}
行を通じてタブ移動時にこれが期待通りに動作しますが、キーボードフォーカスは、上記のように定義されたコンボボックスに決して設定されません。ドロップダウンを選択できるようにするには、マウスを使用する必要があります。
ご協力いただければ幸いです。
@ user1892538回答が削除された理由や削除された理由がわかりません。 –
申し訳ありませんが、私はそれがあなたのために大丈夫ではないと思った...それは機能しましたか?ちょうどの場合、plsは他人が知ることができるようにそれを受け入れる、ありがとう –