【问题标题】:Binding a singleton list to a list view将单例列表绑定到列表视图
【发布时间】:2015-11-26 22:24:31
【问题描述】:

我正在处理一个 PoS 项目,并希望在打开窗口时让我的列表视图填充单例列表的内容,但我无法填充它。

我的单身班

public class Menu
{
    private static Menu instance = new Menu();
    public static Menu GetInstance()
    {
        return instance;
    }
    private List<Dish> menu = new List<Dish>();
    public void AddDish(Dish dish)
    {
        menu.Add(dish);
    }

}

列表视图的 XAML

                    <ListView x:Name="lvMenu" Height="191" BorderThickness="1" BorderBrush="LightGray" Canvas.Left="228" Canvas.Top="12" Width="283">
                    <ListView.View>
                        <GridView AllowsColumnReorder="False">
                            <GridViewColumn Header="Dish Name" Width="180" DisplayMemberBinding="{Binding Dish}" />
                            <GridViewColumn Header="Price" Width="50" DisplayMemberBinding="{Binding Price}" />
                            <GridViewColumn Header="Veg" Width="50" DisplayMemberBinding="{Binding Vegitarian}" />
                        </GridView>
                    </ListView.View>
                </ListView>

任何帮助将不胜感激,如果需要,我很乐意发布任何其他代码

【问题讨论】:

  • 作为旁注。您需要将 Menu 默认构造函数设置为 protected 或 private 才能成为真正的单例。

标签: c# xaml listview data-binding singleton


【解决方案1】:

相应地改变你的班级:

  public class Menu
  {
    private static Menu instance = new Menu();
    public static Menu GetInstance()
    {
      return instance;
    }
    private List<Dish> menu = new List<Dish>();
    public void AddDish(Dish dish)
    {
      menu.Add(dish);
    }

    public static Menu Instance
    {
      get { return instance; }
    }
    public List<Dish> MenuList
    {
      get { return menu; }
      set { menu = value; }
    }
  }

添加这两个属性 InstanceMenuList 允许您在 XAML 中绑定它们。

将以下声明添加到 Window,而不是 SingletonBinding 应该必须写入定义类菜单的命名空间:

xmlns:local="clr-namespace:SingletonBinding"

XAML 中的绑定如下所示:

<ListView x:Name="lvMenu" Height="191" BorderThickness="1" BorderBrush="LightGray" Canvas.Left="228" Canvas.Top="12" Width="283" ItemsSource="{Binding MenuList, Source={x:Static local:Menu.Instance}}">

MenuList 是返回菜肴列表的属性。

使用Source,您告诉 XAML 在哪里查找此属性,这指向您的静态类

【讨论】:

  • 工作完美,感谢您的解释,这是我第一次在 C# 中使用这些功能。
猜你喜欢
  • 2017-09-22
  • 2013-11-25
  • 1970-01-01
  • 2013-04-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-17
  • 1970-01-01
相关资源
最近更新 更多