Я пытаюсь изучить WPF с MVVM, и я столкнулся с проблемой, которую не могу понять.Я пытаюсь отобразить 3 списка во всплывающем окне, но я хочу вставить значения в эти списки из MainViewmodel (списки находятся в reportviewmodel).Дело в том, что если я добавлю значения из конструктора reportviewmodel, они появятся, но если я захочу добавить их из MainViewModel, они не будут.В отладчике все работает нормально, но он не отображается на интерфейсе. Спасибо
XAML
<Popup x:Name="Pop" IsOpen="{Binding IsChecked, ElementName=PCheckBox}"
PlacementTarget="{Binding ElementName=PCheckBox}"
AllowsTransparency="True"
PopupAnimation="Slide"
HorizontalOffset="450"
VerticalOffset="-60"
Margin="0,0,8,8"
/>
<Border BorderThickness="1" BorderBrush="Black">
<Grid DataContext="{Binding}" Width="300" Height="300" Background="Gainsboro" Margin="0">
<Grid.RenderTransform>
<RotateTransform x:Name="theTransform" />
</Grid.RenderTransform>
<Button Width="50" Height="50" HorizontalAlignment="Left" Command="{Binding AbortCommand, UpdateSourceTrigger=PropertyChanged, Mode=OneWay}" VerticalAlignment="Bottom" Content="Abort"/>
<TreeView>
<TreeView.DataContext>
<vm:ReportViewModel/>
</TreeView.DataContext>
<TreeViewItem Header="Error" IsExpanded="True">
<ListView>
<GridViewColumn DisplayMemberBinding="{Binding Error}"/>
</ListView>
</TreeViewItem>
<TreeViewItem Header="Warning" IsExpanded="True">
<ListView>
<GridViewColumn DisplayMemberBinding="{Binding Warning}"/>
</ListView>
</TreeViewItem>
<TreeViewItem Header="Information" IsExpanded="True">
<ListView>
<GridViewColumn DisplayMemberBinding="{Binding Information}"/>
</ListView>
</TreeViewItem>
</TreeView>
</Grid>
</Border>
</Popup>
MainViewModel
class AdminViewModel : ViewModelBase
{
private RelayCommand generateCommand;
public RelayCommand GenerateCommand{ get { return generateCommand; } }
public AdminViewModel()
{
generateCommand = new RelayCommand(o => { Generate(); });
abortCommand = new RelayCommand(o => { abort(); });
rvm = new ReportViewModel();
}
rvm = new ReportViewModel();
private ReportViewModel rvm;
private async void Generate()
{
prg = new Progress();
Text = "starting";
Step = 15;
if (CadFilePath == string.Empty) //always true
{
rvm.LogError("Warning", "This is a warning");
IsChecked = true; //for the popup to show
}
ReportViewModel
class ReportViewModel : ViewModelBase
{
private List<string> error;
public List<string> Error
{
get { return error; }
set
{
error = value;
OnPropertyChanged("Error");
}
}
private List<string> warning;
public List<string> Warning
{
get { return warning; }
set { warning = value;
OnPropertyChanged("Warning");
}
}
private List<string> information;
public List<string> Information
{
get { return information; }
set { information = value;
OnPropertyChanged("Information");
}
}
public ReportViewModel()
{
error = new List<string>();
warning = new List<string>();
information = new List<string>();
Warning.Add("Warning");
Warning.Add("Warning2");
Error.Add("404");
}
public void LogError(string severity, string err)
{
Warning.Add(err);
Error.Add(err);
Information.Add(err);
}
}
}