Я занимаюсь разработкой приложения WPF с MVVM шаблон проектирования, в моем первом окне я хочу, чтобы отобразить DataGrid, созданный с помощью выбранного текста в текстовом поле This is a preview of what i want to doBind DataTable к Datagrid в WPF MVVM во время выполнения
В моей модели ViewModel я реализовал метод, который заполняет datatable с помощью selectedText, а затем привязывает его к DataGrid, но My DataGrid ничего не показывает. Это мой метод
void selectColumn(object parameter)
{
string selText = SelectedText;
if (i == 0)
{
var lines = File.ReadAllLines(TextProperty1);
datatable.Columns.Add("Column" + i + "");
foreach (string line in lines)
{
DataRow newRow = datatable.NewRow();
newRow["Column" + i + ""] = line.Substring(0, selText.Length);
datatable.Rows.Add(newRow)
}
i++;
}
else
{
datatable.Columns.Add("Column" + i + "");
var lines = File.ReadAllLines(TextProperty1);
foreach (DataRow draw in datatable.Rows)
{
draw["Column" + i + ""] = lines[datatable.Rows.IndexOf(draw)].Substring(lines[2].IndexOf(selText), selText.Length);
}
TblData2 = datatable;
i++;
}
TblData2 = datatable;
TextProperty2 = TextProperty2.Remove(0, selText.Length);
}
и в Окне это, как я связывании DataGrid
<TextBox x:Name="txt" Text="{Binding TextProperty2, UpdateSourceTrigger=PropertyChanged}">
<i:Interaction.Behaviors>
<i:DependencyPropertyBehavior PropertyName="SelectedText" EventName="SelectionChanged" Binding="{Binding SelectedText, Mode=TwoWay}"/>
</i:Interaction.Behaviors>
</TextBox>
<Button x:Name="Tex" Content="Select Column" Command="{Binding SelectedColumnCommand}"/>
<DataGrid x:Name="DtGrid" ItemsSource="{Binding TblData2}"/>
Это DataTable
DataTable _dataTable2;
public DataTable TblData2
{
get { return _dataTable2; }
set
{
_dataTable2 = value;
RaisePropertyChanged("TblData");
}
}
Кажется, вы забыли уведомлять об изменениях. Покажите, как определяется ** свойство ** 'TblData2'. Он должен быть свойством, и он должен вызывать 'PropertyChanged' в setter. – Sinatr
Что такое 'TblData2'? – StepUp