Динамические столбцы DataGrid с Caliburn.micro - PullRequest
0 голосов
/ 09 октября 2018

Я работаю над инструментом перевода и поэтому хочу отобразить (и отредактировать) данные перевода в моей БД.Но теперь я уже застрял с отображением данных.

Я использую Caliburn.micro в качестве фреймворка.

Данные передаются во внешний интерфейс бэкэндом в List<List<string>>, где «внешний» список представляет различные фразы, а внутренний список - строку с первым столбцом, являющимся исходным текстом, а каждый последующий столбец - переводами на каждом языке.Представление языка производится в дополнительном списке (то есть строка из первой таблицы car|Auto|voiture, а представление языка de-DE|fr-FR. Исходный язык фиксирован.)

Проблема заключается в том, что когда яупаковать мои списки в IObservableCollection<List<string>>, таблица данных отображает только два столбца: емкость и количество.К сожалению, я не могу поместить все данные в фиксированный объект, поскольку языки не являются фиксированными, что означает, что у меня может быть 30 или даже 100 из них.

У кого-нибудь есть идеи, как мне это сделать?

представление:

<UserControl x:Class="TranslationTool.EditDatabaseView"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             xmlns:local="clr-namespace:TranslationTool"
             mc:Ignorable="d" 
             d:DesignHeight="300" d:DesignWidth="300">
    <Grid>
        <DataGrid ItemsSource="{Binding TranslationData}">

        </DataGrid>
    </Grid>
</UserControl>

модель представления:

class EditDatabaseViewModel : Screen
{
    private IObservableCollection<List<string>> _translationData;

    public EditDatabaseViewModel()
    {
         TranslationData = new BindableCollection<List<string>>(DataStore.DB.GetTranslationsGrid());
    }

    public IObservableCollection<List<string>> TranslationData
    {
        get
        {
            return _translationData;
        }
        set
        {
            _translationData = value;
            NotifyOfPropertyChange();
        }
    }
}

1 Ответ

0 голосов
/ 09 октября 2018

Как писал @ mm8: привязка DataTable к DataGrid работает как шарм!

...