Опитвам се да използвам Silverlight 3.0 DataGrid с шаблона за проектиране MVVM. Моята страница има DataGrid и бутон, който добавя елемент към колекцията във VM с помощта на команда (от библиотеката на композитните приложения). Това работи добре и новият елемент се показва и избира.
Проблемът, който не мога да разреша, е как да започна да редактирам реда. Искам новият ред да може да се редактира веднага, когато потребителят щракне върху бутона Добавяне, т.е. фокусът е зададен на DataGrid и новият ред е в режим на редактиране.
Това е XAML в изгледа:
<Grid x:Name="LayoutRoot">
<StackPanel>
<data:DataGrid ItemsSource="{Binding DataView}"/>
<Button cmd:Click.Command="{Binding AddItemCommand}" Content="Add" />
</StackPanel>
</Grid>
Кодът отзад има един ред код, който създава екземпляр на VM и задава DataContext на изгледа.
VM кодът е:
public class VM
{
public List<TestData> UnderlyingData { get; set; }
public PagedCollectionView DataView { get; set; }
public ICommand AddItemCommand { get; set; }
public VM()
{
AddItemCommand = new DelegateCommand<object>(o =>
{
DataView.AddNew();
});
UnderlyingData = new List<TestData>();
UnderlyingData.Add(new TestData() { Value = "Test" });
DataView = new PagedCollectionView(UnderlyingData);
}
}
public class TestData
{
public string Value { get; set; }
public TestData()
{
Value = "<new>";
}
public override string ToString()
{
return Value.ToString();
}
}
Какъв би бил най-добрият начин за решаване на този проблем с помощта на шаблона за проектиране на MVVM?