首页 新闻 会员 周边

请教WPF MVVM stylet框架,model新增数据后,view的datagrid不更新。

0
悬赏园豆:140 [待解决问题]

datagrid绑定viewmodel后 ObservableCollection add数据,前台view不刷新。

XML=>

<DataGrid x:Name="ReportNows" HorizontalAlignment="Left" Height="330" VerticalAlignment="Top" Width="492" Background="White" AutoGenerateColumns="False" CanUserAddRows="False" CanUserDeleteRows="False" CanUserReorderColumns="False" Canvas.Left="20" Canvas.Top="180" IsReadOnly="True" FontSize="20" ItemsSource="{Binding ReportNow}" SelectionMode="Single">
<DataGrid.Columns>
<DataGridTextColumn Header="ID" Binding="{Binding ID}" Visibility="Hidden" Width=""/>
<DataGridTextColumn Header="时间" Binding="{Binding SaveTime,StringFormat='{}{0:yyyy-MM-dd HH:mm:ss}' }" Width="
"/>
<DataGridTextColumn Header="工单单号" Binding="{Binding GDDH}" Width=""/>
<DataGridTextColumn Header="品号" Binding="{Binding PH}" Width="
"/>
<DataGridTextColumn Header="型号" Binding="{Binding GGXH}" Width="*"/>
</DataGrid.Columns>

</DataGrid>

viewmodel=>

public static ObservableCollection<ImageModel> ReportData { get; set; } = new ObservableCollection<ImageModel>();

实体类 im = new 实体类();
im.ID = Guid.NewGuid().ToString("N");
im.GDDH = “123123123”;

ReportData.Add(im);

实体类=》

public string ID { get; set; }
public string GDDH { get; set; }

。。。。。。。

请帮忙看看哪里有问题,导致add后前台view的datagrid不更新

问题补充:

程序启动的时候 datagrid是有数据的,说明绑定时成功的,只是再add的时候 前台就没有任何反应了。

找到问题了,是另一个控制台程序中调用了这个viewmodel的某个属性,控制台实例化了viewmodel,导致这个viewmodel更新内容后,view不刷新。。那要怎么解决呢??控制台给这个viewmodel的某个属性赋值,是必须的。。

无泪ぁ无悔的主页 无泪ぁ无悔 | 初学一级 | 园豆:36
提问于:2021-08-16 17:15

在线等

无泪ぁ无悔 2年前

哪位大神帮忙看看

无泪ぁ无悔 2年前
< >
分享
所有回答(2)
0

1
view Binding ReportNow
viewmodel 属性是ReportData
2
“是另一个控制台程序中调用了这个viewmodel的某个属性,控制台实例化了viewmodel,导致这个viewmodel更新内容后,view不刷新”
请先确认一下控制台实例化的viewmodel是不是view的viewmodel,
也就是两个实例是不是同一个实例

猝不及防 | 园豆:2781 (老鸟四级) | 2021-08-18 17:00
0

问题1:同楼上描述,view Binding ReportNow,viewmodel 属性是ReportData,下面统一改为 ReportNow
问题2: 声明方式不正确


        //源代码
        public static ObservableCollection<ImageModel> ReportData { get; set; } = new ObservableCollection<ImageModel>();

        //修改为 
        private static ObservableCollection<ImageModel> _ReportRow = new ObservableCollection<ImageModel>();
        public static ObservableCollection<ImageModel> ReportRow
        { 
            get { return _ReportRow ; }
            set { this.SetPropertyValue(ref _ReportRow , value, () => ReportRow); }
        } 
public class ReportRow
{
        //源代码
        public string ID { get; set; }
        public string GDDH { get; set; }

        //修改为 
        private string _ID;
        public string ID
        {
            get { return _ID; }
            set { this.SetPropertyValue(ref _ID, value, () => ID); }
        }

        private int _GDDH;
        public int GDDH
        {
            get { return _GDDH ; }
            set { this.SetPropertyValue(ref _MyProperty, value, () => GDDH ); }
        }
}

Micro丶Organism | 园豆:205 (菜鸟二级) | 2021-08-21 09:39
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册