Я искал целую вечность и не нашел никакого решения. Название в основном охватывает то, что я пытаюсь достичь. Вот то, что у меня так далеко, что явно не работает с вырезанными ненужными вещами.
В 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;
}
Позже я добавляю предметы в базу данных. Модов
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.