繁体   English   中英

使列表可用于WPF应用程序中的所有Windows

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM