2015-11-26 33 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