Я искал возраст и не нашел решения. Название в основном охватывает то, что я пытаюсь выполнить. Вот что у меня есть до сих пор, что явно не работает с нерелевантными вещами.Как программно привязать WPat Datagrid к ObservableCollection пользовательских объектов?
В MainWindow.xaml.cs:
public MainWindow()
{
InitializeComponent();
ModGrid = new DataGrid();
ModGrid.CanUserReorderColumns = false;
DataGridTextColumn Name = new DataGridTextColumn();
Name.Header = "Name";
Name.MinWidth = 45;
Name.Width = (DataGridLength)(new DataGridLengthConverter()).ConvertFromString("*");
Binding nameBinding = new Binding("Name");
nameBinding.Mode = BindingMode.OneWay;
Name.Binding = nameBinding;
ModGrid.Columns.Add(Name);
DataGridTextColumn Tags = new DataGridTextColumn();
Tags.Header = "Tags";
Tags.MinWidth = 40;
Tags.Width = 200;
Binding tagsBinding = new Binding("Tags");
tagsBinding.Mode = BindingMode.OneWay;
Tags.Binding = tagsBinding;
ModGrid.Columns.Add(Tags);
// There are more columns but you get the idea
ModGrid.ItemsSource = Database.Mods;
}
private void RibbonWindow_Loaded(object sender, RoutedEventArgs e)
{
ModGrid.DataContext = Database.Mods;
}
Позже я добавить элементы в Database.Mods
void Fetcher_RequestComplete(bool error, string result, int requestsLeft)
{
if (!error)
{
Database.Mods = Parser.ParseMods(result);
}
}
Это все, что в database.cs
public static class Database
{
public static ObservableCollection<Mod> Mods = new ObservableCollection<Mod>();
}
И это все, что находится в mod.cs
public class Mod
{
public Mod() { }
public Image Status;
public string Name;
public string Description;
public string Author;
public string Tags;
public int Views;
public string Link;
public string[] Versions;
public string[] TagsList;
}
Извините за код спама, но я не видел, как это сделать полностью программно, и это необходимо для меня. Любые ответы вообще очень оценен!
Edit:
В то время как я нашел ответ, если ваш в этой ситуации я нашел, было бы гораздо лучше просто сделать пользовательский элемент управления, и иметь доступ из XAML таким образом.
я должен спросить - почему это должно быть в коде позади? Это создает «неприятный» код и действительно затрудняет его поддержание. Что мешает вам использовать модель представления с привязками данных, настроенными в XAML, и с помощью шаблона данных правильно настроить его? Я имею в виду использование этого подхода - вы можете также вернуться к winforms .... – tsells
Я использую вкладки ленты, и у меня есть contentcontrol, поэтому, когда вы переключаете между вкладками, содержимое изменяется. Я создаю материал для добавления содержимого в код и назначаю его в contentcontrol вручную. Это, вероятно, не самый лучший способ сделать это, но я недостаточно опытен с XAML, чтобы сделать это любым другим способом. – Koraken