2015-11-26 34 views
0

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

任何帮助,将不胜感激,我很高兴张贴任何其他代码如果需要的话

+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。

以下声明添加到窗口,而不是SingletonBinding应该必须写在您的类菜单的definied的命名空间:

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到哪里寻找这个属性,这点到您的静态类

+0

完美工作,感谢您解释,这是我第一次在C#中使用这些功能中的任何一个。 – Biggy