내 프로그램에는 UserControl의 일부인 DataGrid
이 있습니다. 이 격자의 셀 값을 변경하고 데이터 모델에 저장하도록하고 싶습니다. 이는 표준 데이터 바인딩 textBox
이 wpf에서 작동하는 것과 유사합니다.DataGrid에서 값 저장 및 변경 - MVVM
DataGrid
은 TextBox
로 구성됩니다. 셀의 값을 변경할 수는 있지만 페이지에서 벗어난 후에 사라집니다.
UserControl을 XAML :
<DataGrid ItemsSource="{Binding DataModel.Collection}" ... >
<DataGrid.Columns>
<DataGridTemplateColumn IsReadOnly="True">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBox Text="{Binding rowNum}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
.......
</DataGrid>
데이터 모델 :
public class Data_Model : PropertyChangedBase
{
private string one = "One";
private string two = "Two";
private string three = "Three";
private string four = "Four";
private string a = "A";
private string b = "B";
private string c = "C";
private string d = "D";
private ObservableCollection<Class> _Collection;
public Data_Model()
{
Collection = new ObservableCollection<Class>();
Collection.Add(new Class() { rowNum = 0, input = one, output = a });
Collection.Add(new Class() { rowNum = 1, input = two, output = b});
Collection.Add(new Class() { rowNum = 2, input = three, output = c});
Collection.Add(new Class() { rowNum = 3, input = four, output = d});
}
public ObservableCollection<Class> Collection {...}
}
public class Class //Class for DataGrid values
{
public int rowNum { set; get; }
public string input { set; get; }
public string output { set; get; }
}
어떻게 보통 것 (텍스트로서의 string
에 대한 속성을 작성하여 같은 이들 세포에서 사용자가 입력 한 값을 저장할 수 있습니다 textBox
)?
클래스 이름이 나를 혼란스럽게합니다. 'DataClass'가 모델 (또는 데이터 모델)이고'Data_Model'이 실제로 viewModel 인 것 같습니다 ... –
왜 열을'TextBox'es로 템플릿 화합니까? 이것이 편집 목적이라면'DataGrid'는 이것을 out-of-the-box –
으로 수정했습니다. '클래스'는 단지'DataGrid'에 저장된 값을위한 것이고'Data_Model'은 제 데이터 모델입니다. 또한 ... 'TextBox'가 아니라면, 컨트롤없이 동등한 작업을 수행하려면 어떻게해야합니까? –