[英]Make List Available to all Windows in WPF Application
通过WPF应用程序使用产品列表。 列表lstProducts在应用程序的业务层中创建。 该列表随着时间的推移相当稳定。产品仅每6个月更新一次。
该列表如何在C#中实例化,以便在整个应用程序中都可用?
我的C# Class
创建一个列表
namespace BusinessObjects
{
public class Products
{
public class Product
{
public Int64 ProductId { get; set; }
public string FileAs { get; set; }
}
public List<Product> lstFileAs { get; set; }
public Products()
{
//populate lstFileAs
}
}
}
各种形式的组合框的数据绑定如下
products = new Products());
cboProducts.DataContext = products;
cboProducts.ItemsSource = products.lstFileAs;
cboCustomer.DisplayMemberPath = "FileAs";
让我们将其视为已读,我们都希望避免使用全局变量。 但是,我们在使用全局变量的旧的,广泛使用的应用程序上增加了新的前端。 旧的应用程序是用VB6编写的,尽管使用了全局变量,但运行良好。 我们被指示进行最小的更改,以避免不必要地引入错误。
您可以在App.xaml中创建ObjectDataProvider和CollectionViewSource(例如),并在您的项目中引用它们。 我在这里演示一种可能的实现。 此代码假定您创建一个GetProducts()方法。
App.xaml:
<ObjectDataProvider x:Key="ProductsObjDataProvider"
ObjectType="{x:Type BusinessObjects:Products}"
MethodName="GetProducts">
</ObjectDataProvider>
<CollectionViewSource x:Key="ProductsView" Source="{Binding Source={StaticResource ProductsObjDataProvider}}"/>
绑定组合框:
<ComboBox Name="cboProducts"
DisplayMemberPath="FileAs"
ItemsSource="{Binding Source={StaticResource ProductsView}}"
SelectedValue="{Binding Path=ProductID, Mode=TwoWay}"/>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.