我正在嘗試在MVVM設計模式中使用Silverlight 3.0 DataGrid。我的頁面有一個DataGrid和一個按鈕,它使用命令(來自Composite Application Library)將一個項目添加到VM中的集合。這工作正常,並顯示並選擇新項目。使用MVVM在Silverlight 3 DataGrid中編輯新添加的行
我無法解決的問題是如何開始編輯該行。我希望當用戶點擊添加按鈕(即焦點設置到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設計模式?
沒錯。如果我不使用MVVM,我可以很容易地解決這個問題。我的問題是如何實現我想要的結果,同時仍然堅持使用MVVM模式。 – bart