小编Sev*_*ven的帖子

WPF:是否有可能将普通鼠标事件"路由"到Windows 7中的触摸事件

我目前正在使用C#(.NET 4.0)和WPF for Windows 7开发触摸屏应用程序.我的问题是我现在可用的触摸屏驱动程序只生成鼠标事件.(不幸的是,制造商没有提供正版Windows 7驱动程序)所以,目前我无法正确地进行测试.

是否有通用的方法告诉Windows 7某个设备应该是一个触摸设备(当然 - 这只能提供单个触摸事件)?

c# wpf touch windows-7

16
推荐指数
1
解决办法
7974
查看次数

将更改的模型列表同步到ViewModel的ObservableList的最佳实践?

我有一个(外部)模型暴露一个不断变化的List(假设每两秒左右).ViewModel知道该列表注册了PropertyChange事件.ViewModel还为UI提供了一个ObservableCollection以进行数据绑定.

+-----------------------------------------------+
|                                           View|
| +-----------+                                 |
| |Listbox    |                                 |
| +-----------+                                 |
+-----/\----------------------------------------+
      ||
      ||DataBinding
      ||
      ||
+-----||----------------------------------------+
|     ||                               ViewModel|
| +--------------------+         +-------------+|
| |ObservableCollection|<--------|ChangeHandler||
| +--------------------+    /    +-------------+|
|                          /           ^        |
+-------------------------/------------|--------+
                         /             |
                        /              |
           Synchronizing Lists         | PropertyChanged
                                       |
                                       |
+--------------------------------------|--------+
|                                  +-----+ Model|
|                                  |IList|      |
|                                  +-----+      |
|                                               |
+-----------------------------------------------+
Run Code Online (Sandbox Code Playgroud)

除了不断进行的更新之外,原则上它运作良好.每次更新时,用户都会放弃他的选择,即每次更新都会取消选择所有项目.这也就不足为奇了,因为WPF的ListBox"看到"分配了一个新列表.

所以,事情必须是我们分配新的ObservableCollection,而是将当前ObservableCollection的内容与更新的Model.List合并.

现在我的问题

  • 同步列表 - 是否有关于如何进行此类合并的最佳实践(或框架)(将新项目复制到ObservableCollection,删除丢失的项目,更新更改的项目)
  • 选定项目 - 如何确保ListBox保留当前选定的项目(除了项目已被删除的情况)

wpf user-interface synchronizing observablecollection c#-4.0

9
推荐指数
1
解决办法
2752
查看次数

如何在WPF中使模型类可观察

脚本

我从外部组件或代码部件获取模型类,我不想改变某些东西.我想将这个类绑定到一些WPF UI.如果这个模型被改变,我也想刷新UI.

我是否真的需要一直编写一个包装类,为每个setter创建PropertyChanged事件?我怎么能阻止手动编写所有这些线索编码?

什么开始这样......

public class User : IUser
{
    public String Name { get; set; }
    public bool CurrentlyLoggedIn { get; set; }

    // ...
}
Run Code Online (Sandbox Code Playgroud)

......总会像这样膨胀

public class UserObservableWrapper : IUser, INotifyPropertyChanged
{
    public String Name
    {
        get
        {
            return this.innerUser.Name;
        }
        set
        {
            if (value == this.innerUser.Name)
            {
                return;
            }

            this.innerUser.Name = value;
            this.OnPropertyChanged( "Name" );
        }
    }

    public bool CurrentlyLoggedIn
    {
        get
        {
            return innerUser.CurrentlyLoggedIn;
        }
        set
        {
            if (value.Equals( innerUser.CurrentlyLoggedIn ))
            {
                return; …
Run Code Online (Sandbox Code Playgroud)

c# wpf frameworks mvvm inotifypropertychanged

6
推荐指数
1
解决办法
2400
查看次数