Tag: wpf

更新/使用另一个ViewModel中的变量

为了练习WPF + MVVM,我决定写一个学校课程。 到目前为止,我有class级和学生class。 还有基本视图模型,ViewModelBase.cs,它派生自INPC,实例类 – “StudentClass”。 所有其他视图模型都派生自viewmodelbase。 问题是我有一个页面/窗口为每个“function”,(例如;查看所有学生,添加学生,删除学生等…)我希望能够从任何地方访问该类应用程序,因为所有的信息基本上存储在那里。 为了保持井井有条,每个“function”都有自己的视图模型(StudentListViewModel.cs,AddStudentViewModel.cs …)。 我试图从viewmodels访问该类,这只会导致类在一个窗口而不是在另一个窗口中更新的情况。 当我设置“学生列表”窗口的视图模型和“添加学生”窗口时,显然会同步列表。 所以我想问题就是类实例得到重复或类似的东西。 我上传了该项目以供参考: http : //www.mediafire.com/?n70c7caqex6be1g 希望有人可以帮助我。 我试着在google上寻找答案,但所有的答案都提到了与框架相关的“信使”和“事件”。 由于我没有使用该项目的框架,这些解决方案不适用于我。 另一种解决方案是将viewmodel的实例传递给另一个,但我的viewmodel都没有调用或实例化另一个viewmodel。 更新: StudentList.xaml中的XAML :(这是一个用户控件,因为我使用的是名为ModernUI的模板) AddStudent.xaml中的XAML: AddStudentViewModel.cs: public class AddStudentViewModel : ViewModelBase { private Student _student; private ICommand _addStudent; private ViewModelBase newIns; public ICommand AddStudent { get { if (_addStudent == null) { _addStudent = […]

如何将自引用表绑定到WPF TreeView

从edmx绑定自引用表的最佳解决方案是什么: 到WPF TreeView控件有类似的东西:

ViewModel为特定属性订阅Model的PropertyChanged事件

我想在模型中的Property更改时执行methodToBeCalledWhenPropertyIsSet()。 我怎么能这样做? 如果我理解正确,我可以在我的ViewModel中的某处添加MyModel.PropertyChanged += methodToBeCalledWhenPropertyIsSet来订阅PropertyChanged事件,但我只关心Property的设置 public class ViewModel : INotifyPropertyChanged { … public Model MyModel { get; set; } public void methodToBeCalledWhenPropertyIsSet() { } public event PropertyChangedEventHandler PropertyChanged; [NotifyPropertyChangedInvocator] protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null) { PropertyChangedEventHandler handler = PropertyChanged; if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName)); } } public class Model : […]

如何懒惰评估wpf:DataGrid,仅在需要时检索数据

我有一个WPF数据网格,绑定到一个由数据库中的linq-to-sql填充的列表。 绑定是双向的,允许用户更改每行中的值 当显示大约20000行时,程序在列表初始化期间因内存不足exception而崩溃。 即使行数较少,性能也会变得难以忍受。 我知道在初始化时,datagrid遍历每一行来测量最大列宽和其他属性。 对于所有行,它显然会这样做,无论它们是否在屏幕上。 我尝试将datagrid绑定到myQuery.ToList() (以允许通过单击列对数据网格进行排序)或直接绑定到IQueryable。 (排序不适用于此) 两者都产生相同的结果。 仅具有20000个项目的ToList()不会导致大量内存消耗,只有当它绑定到数据网格时才会发生这种情况。 忽略数据网格中20000行有用的问题(这些是当前的要求;更改那些工作示例会有所帮助)。 什么是懒惰加载当前显示在屏幕上的数据的最简单方法,并忽略其他所有内容,直到它滚动到视图中? 这可以在没有第三方库和主要代码更改的情况下完成吗? 如果没有,推荐的解决方法是什么?

使用命名空间进行XML数据绑定

我想使用XML文档的数据绑定来填充一个显示人员列表详细信息的简单表单。 我已经完成了所有设置并且现在正如此工作: Male Female (为清晰起见,已删除所有位置/布局元素) 现在这很棒! 如果我为它提供了一些与提供的路径匹配的XML,我会在列表框中获得一个名称列表,在单击时在相应的字段中显示名称和性别。 当我开始尝试在XML源中使用命名空间时,问题就来了。 然后XAML变为如下所示: Male Female 使用此代码(当然还有适当的命名空间的xml),Listbox仍然可以正确显示名称,但单击这些名称不再更新Name和Gender字段! 我的怀疑是,xml命名空间在某种程度上对groupbox的DataContext产生了不利影响,但我不确定为什么或如何。 有谁知道如何在此上下文中使用XML命名空间?

格式化MultiBinding TimeSpan以隐藏毫秒

我目前正在尝试将WPF TextBlock多绑定到TimeSpan属性。 以下作品: 不幸的是,使用MultiBinding“销毁”StringFormat并在旁边显示毫秒(虽然通过StringFormat隐藏)。 以下不起作用: 在实际的MultiBinding中使用时,相同的StringFormats不起作用(例如: )。 我应该如何构造我的StringFormat?

WPF MediaElement应用程序的播放列表

我正在通过构建一个WMP类型的应用程序来学习C#和WPF。 下面的代码运行正常,从列表框中选择一个电影在media元素中运行它。 我遇到的问题是找到一种方法在一个结束后自动开始下一部电影。 谢谢。 提供电影列表的xml文件: 熊c:\ movies \ Bear.wmv蝴蝶c:\ movies \ Butterfly.wmv Lake c:\ movies \ Lake.wmv XAML

如何在没有丢失链接的数据库中保存WPF RichTextBox?

我在Richtextbox中有一个链接并且它运行良好但是如果我将Richtextbox保存到数据库中然后加载它要删除的链接我只能看到该链接的文本 例如我的Richtextbox有底部文字: 这是一个链接 但在保存并再次加载后我才能看到文字: 这是一个链接 从所选文本动态创建的超链接如下: RichTextBox.IsDocumentEnabled = true; RichTextBox.IsReadOnly = true; Run run = new Run(RichTextBox.Selection.Text); Hyperlink hyp = new Hyperlink(run) { TargetName = run.Text }; TERM.WordMain main = new TERM.WordMain(); hyp.Click += new RoutedEventHandler(main.hyperLink_Click); hyp.NavigateUri = new Uri(“http://search.msn.com”); RichTextBox.Cut(); var container = new InlineUIContainer(new TextBlock(hyp), RichTextBox.Selection.Start); RichTextBox.IsDocumentEnabled = true; RichTextBox.IsReadOnly = false; 将RTF格式的richtextbox内容保存到文本字段: […]

双击datagrid时出现问题

我在C#代码中的数据网格上有以下内容: 除非用户首先选择行(单击)然后尝试双击该行,否则它大部分都有效。 在这种情况下,CmdTransUnitFillerRowDblClick代码永远不会被触发进行处理。 那么,当行已被选中时,如何在双击时正确触发CmdTransUnitFillerRowDblClick? 有人可能会问: private void ExecutecmdTransUnitFillerRowDblClick(object parameter) { if (DgTransUnitFillerSelectedItem != null) TransUnitFillerDoubleClick(DgTransUnitFillerSelectedItem.CollectionRowId); }

WPF应用程序的基于角色的访问控制 – 最佳实践

我需要为我正在编写的WPF应用程序实现某种RBAC 。 从v2.0开始,ASP.NET已经拥有了安全性,成员资格和角色管理基础架构(如此处所述),虽然我可以使用它,但仍然觉得在这种情况下使用它会有点笨拙。 我会欢迎任何使用它并在类似环境中取得成功的人的反馈。 我也考虑过使用AD LDS,阅读TechNet文章并查看了一些MSDN代码示例,但我想知道是否有任何组件(用于.NET)可以消除创建数据库背后的一些固有复杂性,将其设置为部署和正在进行的维护。 在这种情况下,免费或商业是可以的。 关于SO的其他问题提到客户端应用程序服务,但这需要将IIS添加到组合中,虽然不超出可能性范围,但是在项目开始时我没有想到的东西。 在这种情况下,最佳做法是什么? 该应用程序是典型的n层类型事件,它与远程SQL Server数据库进行通信,因此如果需要,可以将角色存储在那里