所以,我有一个 mainviewmodel 和一个 secondviewmodel,我的 ObservableCollection 在 secondviewmodel 中,但是我想从 mainviewmodel 填充它,然后在程序的稍后部分我想加载一个带有列表视图的弹出窗口,该列表视图具有从之前加载的数据。我不想在视图中的列表中添加数据。我一直在考虑这个问题,直到现在我才在打开它时添加来自 secondviewmodel 显示的数据。XAM1<Grid Background="Gainsboro" > <Grid.DataContext> <vm:AdminViewModel/> </Grid.DataContext> <Grid.RowDefinitions> <RowDefinition Height="100" /> <RowDefinition Height="*" /> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition Width="auto"/> <ColumnDefinition Width="*"/> <ColumnDefinition Width="auto"/> </Grid.ColumnDefinitions> <Button Grid.Row="0" Command="{Binding GenerateCommand}" Grid.Column="2" Height="30" Width="55" x:Name="btnGenerate" Margin="5,5,5,0" FontSize="8.5" VerticalAlignment="Top" HorizontalAlignment="Center" Content="Generate"/> <StackPanel Grid.Row="1" Grid.Column="0"> <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"/>
1 回答
SMILET
TA贡献1796条经验 获得超4个赞
您正在此行中创建视图模型的另一个实例:(删除此)
<TreeView.DataContext>
<vm:ReportViewModel/>
</TreeView.DataContext>
您应该做的是改为读取视图模型的现有实例:(添加此)
<TreeView DataContext="{Binding Rvm}">
显然你需要有一个公共财产才能ReportViewModel让它AdminViewModel工作:(添加这个)
public ReportViewModel Rvm { get { return rvm; } }
编辑
您需要Rvm这样定义,因为绑定源必须是public property
您不需要通知Rvm(以及 3 个集合)的更改,因为您只在构造函数中设置它们的值,以后再也不会更改它们。
一个好的做法ObservableCollection是从以下代码中创建一个片段:
private ObservableCollection<string> warning = new ObservableCollection<string>();
public ObservableCollection<string> Warning { get { return warning; } }
- 1 回答
- 0 关注
- 154 浏览
添加回答
举报
0/150
提交
取消
