Использование класса DataGrid (CommunityToolkit.WinUI.UI.Controls) на острове XAML из библиотеки классов C#.C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Использование класса DataGrid (CommunityToolkit.WinUI.UI.Controls) на острове XAML из библиотеки классов C#.

Сообщение Anonymous »

У меня есть следующая настройка: я отображаю элементы WinUI3 из библиотеки классов C# в приложении Win32 C++ с использованием островов XAML. Элемент управления, который я хочу использовать, — это CommunityToolkit.WinUI.UI.Controls DataGrid, но он доступен только для C#, поэтому мне нужно использовать библиотеку классов C#.
У меня есть эта функция, которая вызывается в моем приложении Win32:

Код: Выделить всё

public static int ShowWindow(nint args, int sizeBytes)
#pragma warning restore IDE0060 // Remove unused parameter
{
// Initialize WinAppSDK 1.6 or 1.7
if (!Bootstrap.TryInitialize(0x00010007, string.Empty, new PackageVersion(), Bootstrap.InitializeOptions.None, out var hr) &&
!Bootstrap.TryInitialize(0x00010006, string.Empty, new PackageVersion(), Bootstrap.InitializeOptions.OnNoMatch_ShowUI, out hr))
return hr;

if (_app == null)
{
_app = new DummyApp(); // Optional: enables WinUI 3 styles
DispatcherQueueController.CreateOnCurrentThread();
}

var _source = new DesktopWindowXamlSource();
_source.Initialize(Win32Interop.GetWindowIdFromWindow(args));

var window = new Microsoft.UI.Xaml.Window();

var sampleData = new List
{
new Person { Name = "Alice", Age = 30 },
new Person { Name = "Bob", Age = 25 },
new Person { Name = "Charlie", Age = 35 }
};

var dataGrid = new CommunityToolkit.WinUI.UI.Controls.DataGrid
{
AutoGenerateColumns = true,
ItemsSource = sampleData,
Margin = new Thickness(20)
};

var grid = new Microsoft.UI.Xaml.Controls.Grid
{
Background = new Microsoft.UI.Xaml.Media.SolidColorBrush(Microsoft.UI.Colors.White)
};
grid.Children.Add(dataGrid);

window.Content = grid;
window.Activate();

return 0;
}
Он компилируется и запускается, за исключением того, что DataGrid не отображается, окно, которое я создаю, пусто, тот же код работает и правильно отображает DataGrid, если я делаю это в приложении C# WinUI3. Есть идеи, почему?
Пример рассматриваемого проекта здесь.

Подробнее здесь: https://stackoverflow.com/questions/797 ... sland-from
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»