C# WPF MVVM - 如何填充 ObservableCollection 然后稍后在列表视

所以,我有一个 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"/>


慕的地6264312
浏览 155回答 1
1回答

SMILET

您正在此行中创建视图模型的另一个实例:(删除此)<TreeView.DataContext>&nbsp; &nbsp; <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; } }
打开App,查看更多内容
随时随地看视频慕课网APP