Невозможно редактировать элементы в DataGrid

115
11

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

EDIT: эти проекты создаются с использованием инструмента MVVM Light Toolkit

MainWindow.xaml

<Window x:Class="PartExplorer.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:ignore="http://www.ignore.com"
mc:Ignorable="d ignore"
Height="300"
Width="300"
Title="{Binding WelcomeTitle}"
DataContext="{Binding Main, Source={StaticResource Locator}}">

<Window.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Skins/MainSkin.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Window.Resources>

<Grid x:Name="LayoutRoot">
<DataGrid ItemsSource="{Binding PriceItems, Mode=TwoWay}" IsReadOnly="False" CanUserAddRows="True" />
</Grid>
</Window>

MainViewModel.cs

...
/// <summary>
/// The <see cref="PriceItems" /> property name.
/// </summary>
public const string PriceItemsPropertyName = "PriceItems";

private ObservableCollection<PriceItem> _priceItems = new ObservableCollection<PriceItem>();

/// <summary>
/// Sets and gets the PriceBook property.
/// Changes to that property value raise the PropertyChanged event.
/// </summary>
public ObservableCollection<PriceItem> PriceItems
{
get
{
return _priceItems;
}

set
{
if (_priceItems == value)
{
return;
}

RaisePropertyChanging(PriceItemsPropertyName);
_priceItems = value;
RaisePropertyChanged(PriceItemsPropertyName);
}
}
...

PriceItem.cs

public class PriceItem
{
public PriceItem()
{
Name = "";
Price = 0;
Weight = 0;
PartType = Type.Standard;
}

public PriceItem(string name, double price, int weight, Type partType)
{
Name = name;
Price = price;
Weight = weight;
PartType = partType;
}

public Type PartType { get; private set; }
public string Name { get; private set; }
public double Price { get; private set; }
public int Weight { get; private set; }
}

public enum Type
{
Standard,
Special
}

спросил(а) 2013-05-17T10:11:00+04:00 7 лет, 5 месяцев назад
1
Решение
72

Хорошо, я глуп. Сделайте сеттеры в классе PriceItem общедоступным.

ответил(а) 2013-05-17T10:45:00+04:00 7 лет, 5 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема