Я плохо владею английским, потому что я не носитель английского языка. Надеюсь, ты понимаешь.
Мне нужно использовать элемент управления WindowsFormsHost, потому что я использую DataGridView WinForm. Я не могу управлять DataGrid в WPF по некоторым причинам.
В файле .cs мне удалось использовать WindowsFormsHost с DataGridView WinForm. Код показан ниже.
var tabItem = new ClosableTab();
#region Core Logic
var winformControl = new WindowsFormsHost();
winformControl.VerticalAlignment = VerticalAlignment.Stretch;
winformControl.HorizontalAlignment = System.Windows.HorizontalAlignment.Stretch;
winformControl.Child = new DataGridView();
DataGridView parsingTableView = winformControl.Child as DataGridView;
parsingTableView.EditMode = DataGridViewEditMode.EditProgrammatically;
parsingTableView.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;
parsingTableView.DataSource = mainWindow.editor.TokenTable;
parsingTableView.CellMouseEnter += new DataGridViewCellEventHandler(this.tableGridView_CellMouseEnter);
tabItem.Content = winformControl;
#endregion
this.mainWindow.tablControl.Items.Add(tabItem);
Теперь я хочу преобразовать приведенную выше логику в XAML, поэтому я написал логику, как показано ниже.
Сначала я определил DataTemplate для отображения типа DataTable.
// В файле ресурсов
xmlns:systemData="clr-namespace:System.Data;assembly=System.Data"
xmlns:wf="clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms"
<DataTemplate DataType="{x:Type systemData:DataTable}">
<WindowsFormsHost>
<WindowsFormsHost.Child>
<wf:DataGridView DataSource="{Binding}" EditMode="EditProgrammatically" AutoSizeColumnsMode="AllCells"/>
</WindowsFormsHost.Child>
</WindowsFormsHost>
</DataTemplate>
Теперь указанный выше шаблон DataTemplate используется при привязке к Content, как показано в приведенном ниже коде.
// В файле xaml
<Grid>
<TabControl ItemsSource="{Binding SelectedItem}">
<TabItem Header="{lex:Loc Key=TokenTable}" Content="{Binding TokenTable}"/>
</TabControl>
</Grid>
Когда я выполняю приведенный выше код, я столкнулся с ошибкой, как показано ниже, в DataSource = "{Binding}".
Если мне придется переводить указанную выше ошибку, используя мои плохие знания английского языка. Ошибка говорит мне. «Невозможно настроить привязку к свойству DataSource». «Связывание можно настроить только на DependencyProperty объекта DependencyObject».
Я думаю, что знаю, какую ошибку пытаюсь сказать мне, но я не знаю, что я делаю, чтобы решить указанную выше проблему.
Что мне делать, чтобы решить эту проблему?
Спасибо за чтение.