【问题标题】:using statement in codebehind在代码隐藏中使用语句
【发布时间】:2015-12-03 21:53:12
【问题描述】:

在编辑 c# 程序时,我的顶部包含带有 using 关键字的命名空间。如using System;

我有一些在我的 WPF 应用程序中冗余实现的类。我想创建一个参考点来使用整个应用程序中的方法。

例如,当我为 ComboBoxes 执行数据绑定时,我有一个包含这个的类...

public class ComboBoxItemSource : ViewModelBase
{
    public ObservableCollection<Item> Source { get; set; }
    public Item Selected { get; set; }
}

我希望将它放在一个地方并将其包含在引用中,而不是在需要组合框绑定的每个 ViewModel 中创建它。

【问题讨论】:

  • 您必须拥有 VM 的根基类。如果你还没有,那就做一个,然后把所有这些东西都放在那里。由于它将被放置在像 C# 中的 Object 类这样的超级基类中,因此您可以在任何地方访问它。

标签: wpf namespaces


【解决方案1】:

我建议只将该类放在一个单独的文件中并将其添加到您的项目中。

甚至更简单:

  • 在解决方案资源管理器中右键单击您的项目->“添加新项目”->“类”。
  • 将您的课程复制/粘贴到文件中
  • 调整命名空间
  • 将缺少的使用添加到文件中(尤其是“视图模型库”的使用)

文件中包含命名空间的类现在看起来类似于:

namespace MyNamespace
{
    public class ComboBoxItemSource : ViewModelBase
    {
        public ObservableCollection<Item> Source { get; set; }
        public Item Selected { get; set; }
    }
}

【讨论】:

    【解决方案2】:

    你可以这样做。

    创建一个IComboBox接口:

    public interface IComboBox
    {
       ObservableCollection<Item> Source { get; set; }
       Item Selected { get; set; }
    }
    

    然后您可以创建一个继承自您的 ViewModelBase 并实现您的 IComboBox 的类:

    public class ComboBoxVM :ViewModelBase, IComboBox
    {
        public ObservableCollection<Item> Source
        {
            get
            {
                // do stuff
                return _source;
            }
            set { _source = value; }
        }
    
        public Item Selected
        {
            get
            {
                // do stuff
                return _selected;
            }
            set { _selected = value; }
        }
    }
    

    然后在您的 ComboBoxItemSource 中,从 ComboBoxVM 继承:

    public class ComboBoxItemSource : ComboBoxVM
    {
    
    }
    

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 2021-06-13
      • 2011-04-21
      • 1970-01-01
      • 1970-01-01
      • 2013-10-22
      • 2018-03-21
      • 2013-02-27
      • 2020-04-07
      • 1970-01-01
      相关资源
      最近更新 更多