我正在使用翻译工具,因此我想在数据库中显示(和编辑)翻译数据。但是现在我已经被数据显示所困扰。

我正在使用Caliburn.micro作为框架。

数据通过List<List<string>>由后端传递到前端,其中“外部”列表表示不同的短语,内部列表中的一行以第一列为原始文本,每一列为每种语言的翻译。语言表示在额外的列表中(即,从第一个表开始的一行是car|Auto|voiture,语言表示是de-DE|fr-FR。源语言是固定的。)

现在的问题是,当我将列表打包在IObservableCollection<List<string>>中时,datagrid仅显示两列:容量和计数。不幸的是,由于语言不是固定的,我无法将所有数据放在固定的对象中,这意味着我可以拥有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>

View 模型:
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();
        }
    }
}

最佳答案

正如@ mm8所写:将DataTable绑定(bind)到DataGrid就像一个魅力!

关于c# - 带有Caliburn.micro的动态DataGrid列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52715108/

10-15 02:45