Почему моя база данных записывает свойство Length? - PullRequest
0 голосов
/ 17 мая 2018

Итак, я настроил модель просмотра, где она привязывает ObservableCollection<string> к моей DataGrid.

Она выводит значение просто отлично, но также выводит длину свойства?Я не помню, чтобы когда-либо устанавливал это в любом обязательном порядке.Почему это происходит?

Visual representation of what it looks like

My MainWindow.cs

public MainWindow()
{
    InitializeComponent();
    DataContext = new MasterViewModel();
}

MasterViewModel.cs

class MasterViewModel
{
    public Users Users { get; } = new Users();
    public Achievements Achievements { get; } = new Achievements();
}

Users.cs

class Users : INotifyPropertyChanged
{
    public Users()
    {
        newList.Add("Hello there");
    }

    private ObservableCollection<string> newList = new ObservableCollection<string>();

    public ObservableCollection<string> NewList
    {
        get { return newList; }
        set { newList = value; }
    }


    public event PropertyChangedEventHandler PropertyChanged;
    private void OnPropertyChanged(string propertyName = null)
    {
        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
    }
}

XAML

<DataGrid ItemsSource="{Binding Users.NewList}" Width="400" Height="200" Margin="182,158,210,61">
    <DataGrid.Columns>
        <DataGridTemplateColumn>
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <TextBlock Text="{Binding}"></TextBlock>
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn>
    </DataGrid.Columns>
</DataGrid>

Ответы [ 2 ]

0 голосов
/ 17 мая 2018

Я забыл добавить свойство AutoGenerateColumns="False".Не уверен, почему он был установлен в значение true по умолчанию или почему он выберет свойство length для всех свойств, но, думаю, я его исправил.

0 голосов
/ 17 мая 2018

DataGrid имеет свойство AutoGenerateColumns, которое по умолчанию установлено на True и позволяет DataGrid создавать столбец для каждого свойства, определенного в элементах.

DataGrid связан с NewList, который содержит элементы типа string, который имеет свойство Length. Так получается Length столбец

Вы можете отключить автогенерацию, установив <DataGrid AutoGenerateColumns="False" ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...