Код: Выделить всё
ComboBoxСвязка ItemsSource
I' Я использую WinUI 3 с C# для своего проекта.
Я просмотрел множество других подобных сообщений, в которых обсуждается привязка ComboBox ItemsSource к Dictionary и я почти уверен, что делаю все правильно.
Я даже тестировал код, используя объект Dictionary для привязки к ComboBox и это работает без проблем.
Но только когда я использую объект класса в качестве TValue, выдается эта ошибка:
Код: Выделить всё
Exception thrown: 'System.InvalidOperationException' in WinRT.Runtime.dll
Target type is not a projected type: App1.Sample
Код: Выделить всё
public static void Set_Microsoft_UI_Xaml_Controls_ItemsControl_ItemsSource(global::Microsoft.UI.Xaml.Controls.ItemsControl obj, global::System.Object value, string targetNullValue)
{
if (value == null && targetNullValue != null)
{
value = (global::System.Object) global::Microsoft.UI.Xaml.Markup.XamlBindingHelper.ConvertValue(typeof(global::System.Object), targetNullValue);
}
obj.ItemsSource = value;
}
...
Шаги по воспроизведению ошибки
- Создайте новое пустое приложение, упакованное (WinUI 3 в настольной версии) в Visual Studio
- Соответствующим образом добавьте следующий код:
Код: Выделить всё
MainWindow.xaml:
Код: Выделить всё
MainWindow.xaml.cs:
using Microsoft.UI.Xaml;
using System.Collections.Generic;
namespace App1 {
public sealed partial class MainWindow : Window {
public MainWindow() {
this.InitializeComponent();
Samples.Add("skdn", new());
}
public Dictionary Samples = new();
public class Sample {
public string Name { get; set; }
public Sample() {
}
}
}
}
- Запустите приложение
Приложение должно работать без ошибок.
Подробнее здесь: https://stackoverflow.com/questions/765 ... ject-throw