- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
private ObservableCollection<ProjectItem> _projectItems;
public ObservableCollection<ProjectItem> DataItems
{
get { return _projectItems; }
}
public ProjectsPanelViewViewModel()
{
_projectItems = new ObservableCollection<ProjectItem>();
_createProjectCommand = new DelegateCommand(OnCreateProjectCommand);
_saveProjectCommand = new DelegateCommand(OnSaveProjectCommand);
}
private void OnCreateProjectCommand()
{
_addProjectViewModel = new AddProjectViewModel();
AddProjectView view = new AddProjectView();
view.Show();
}
private void OnSaveProjectCommand()
{
ProjectItemViewModel _vm = new ProjectItemViewModel();
_vm.ProjectName = ProjectName;
_vm.ProjectDescription = ProjectDescription;
var item = new ProjectItem(_vm);
_projectItems.Add(item);
}
XAML
<UserControl.DataContext>
<VM:ProjectsPanelViewViewModel/>
</UserControl.DataContext>
<StackPanel Name="ProjectsPanel" Style="{DynamicResource FullLengthPanelStyle}" >
<StackPanel Name="ProjectsHeader" Orientation="Horizontal" Margin="0,0,0,5">
<Label Style="{StaticResource TitleLabelStyleBlue}">projects</Label>
<Button Name="AddProjects" Margin="10,5,0,0" Style="{StaticResource CircularGreyButtonStyle}" Content="+" ToolTip="Add a new project" Command="{Binding CreateProjectCommand}"/>
<Button Name="ExpandProjects" Margin="10,5,0,0" Style="{StaticResource CircularGreyButtonStyle}" Content=">" ToolTip="Expand projects"/>
</StackPanel>
<ScrollViewer VerticalScrollBarVisibility="Visible">
<ItemsControl ItemsSource="{Binding DataItems}"/>
</ScrollViewer>
</StackPanel>
当 OnCreateProjectCommand 打开时,它会创建一个包含 2 个字符串字段的窗口,然后会有一个执行 OnSaveProjectCommand 的按钮。命令执行得很好,但是 UI 没有发现新项目已添加到集合中。 (调试时它在那里)。但是,如果您更改 OnSaveProjectCommand 中的代码并将其放入 OnCreateProjectCommand,并对简单字符串值进行硬编码,则 UI 会根据可观察集合正确更新。
谁能给我一些指导,说明为什么这不起作用,以及我应该从此命令生成新窗口的正确方法。这应该通过 Prism 的基于状态的 View 导航来完成吗?我们已经将其用于模块化和命令化。
感谢您的建议。
最佳答案
我认为您可能在那里遇到引用问题。您如何将这些 ViewModel 彼此粘合在一起?我不熟悉 Prism,但您在屏幕上查看的 VM 实例可能与您正在调试的实例不同。否则就没有意义。 Observablecollections 通常工作得很好,除非您从 UI 线程以外的不同线程操作它们。尝试使用 Snoop监视正在运行的应用程序以查看您的 DataContext 是什么。
关于c# - UI 不从单独 ViewModel 的命令调用的 ObservableCollection 更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13144348/
这是一个有趣的案例,我无法在网上找到任何信息。我正在尝试创建一个网格,需要将 ObservableCollection 的 ObservableCollection 绑定(bind)到它。想象这样一个
如何复制ObservableCollection项目到另一个 ObservableCollection没有引用第一个集合?这里ObservableCollection影响两个集合的项目值更改。 代码
public class Alpha { public ObservableCollection Items { get; set; } public Alpha() {
我只是想知道如何拥有父集合的子集合? 例如, 我已经有一个 ObservableCollection 产品,它正在添加并正确绑定(bind)到 XAML。但是,现在我需要另一个包含产品项目的 Obse
我对 Silverlight 体验相对较新,我正在尝试创建一个带有 DomainService 的 MVVM 应用程序,该应用程序将 POCO 作为模型返回。我有一个 UserControl,它有一个
查看 Microsoft 站点上的 Windows 运行时引用,我能找到的唯一相关集合是 IObservableVector 。 .NET Projection ObservableCollectio
我正在尝试获取值“thisValueIwant”。有没有可能如此容易地获得这个值(value)?或者也许这两个 ObservableCollection 有另一种解决方案 public class F
我有一个 ObserveableCollection,其中包含另一个 ObserveableCollection。在我的 WPF 中,我设置了对 Persons.Lectures 的绑定(bind)。
我有一个包含 20 个项目(图像)和按钮(“下一个”)的 observablecollection。我如何获得像 observablecollection.next() 和 observablecol
我有一个 ObservableCollection . T 有一个 ToString() 方法。我想做的是转换 ObservableCollection至 ObservableCollection .
我有一个 DataGrid,它绑定(bind)到 ViewModel 中的一个 ObservableCollection。这是一个搜索结果DataGrid。问题是,在我更新搜索结果 Observabl
有一堆ObservableCollection Result并要求将它们全部组合成另一个 ObservableCollection AllResults所以我可以在 listview 中显示它. 只是
哪个是保存我的数据的更好解决方案,还是取决于某些条件? 示例情况 1: 您需要显示一个数据列表,选择后可以在新窗口中修改。 示例情况 2: 您需要显示可以在此列表中修改的数据列表。 最佳答案 当您使用
从 xml 中执行 ViewModel 的最佳方法是什么:
所以我有一个 BaseClass 以及继承自基类的几个子类 ChildClass1 ChildClass2 我有ObservableCollections需要就地排序的子类,我无法创建新的 Obser
我为 ObservableCollection 构建了一个简单的扩展方法 AddRange: using System; using System.Collections.Generic; using
我的情况是,我有“tablegenerateModel”类的 ObservableCollection,该类进一步包含“column_Data”类的 ObservableCollection,并且这个
我将有一个 7 个小“购物 list ”,然后是一个包含 7 个小 list 中所有项目的大 list 。 是否可以使用 databind 和 observablecollection,以便从小列表中
当所述 ObservableCollection 从 View 模型公开时,我无法找到正确的绑定(bind)语法来绑定(bind) ObservableCollection 中包含的项目的属性。 当我
我有以下类(class),效果很好 public class RemoteSource { ObservableCollection remote; string[] _servers
我是一名优秀的程序员,十分优秀!