将单例列表绑定到列表视图

时间:2015-11-26 22:24:31

标签: c# xaml listview data-binding singleton

我正在开发一个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>

我们非常感谢任何帮助,如果需要,我很乐意发布任何其他代码

1 个答案:

答案 0 :(得分: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是返回Dishes列表的属性。

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