C# 可观测集合的继承

C# 可观测集合的继承,c#,wpf,infragistics,C#,Wpf,Infragistics,我需要以类的形式继承我的集合,如下所示: public class UsageCollection : ObservableCollection<UsageStatistics> { public UsageCollection() { // static initialization Add(new UsageStatistics("A", 6, "1/2/2012")); Add(new UsageSt

我需要以类的形式继承我的集合,如下所示:

public class UsageCollection
        : ObservableCollection<UsageStatistics>
{
    public UsageCollection()
    {
       // static initialization
        Add(new UsageStatistics("A", 6, "1/2/2012"));
        Add(new UsageStatistics("C", 8, "1/2/2012"));
    }  
}

public class UsageStatistics
{
    public string Alias { get; set; }
    public int ActivityCount { get; set; }
    public string Date { get; set; }

    public UsageStatistics(
        string alias,
        int activityCount,
        string date
        )
    {
        Alias = alias;
        ActivityCount = activityCount;
        Date = date;
    }
}
公共类UsageCollection
:可观察收集
{
公共用途收集()
{
//静态初始化
新增(新美国格式学家(“A”,6,“2012年1月2日”);
新增(新美国格式统计(“C”,8,“1/2/2012”);
}  
}
公共类格式塔学家
{
公共字符串别名{get;set;}
public int ActivityCount{get;set;}
公共字符串日期{get;set;}
公共格式塔学家(
字符串别名,
int activityCount,
字符串日期
)
{
别名=别名;
ActivityCount=ActivityCount;
日期=日期;
}
}
如您所见,我可以在构造函数中静态初始化它

public UsageCollection ( ObservableCollection<UsageStatistics> someCollection );
然而,实际上我是在运行时获取此集合的。如何将该集合分配给此类

im获取的集合是
可观察的集合

我需要封装的原因是基础设施需要:

 <Window.Resources>
        <comboSourceCase:UsageCollection x:Key="data" />
        <ig:GroupBy   
            x:Key="grouped"  
            ItemsSource="{StaticResource data}"   
            GroupMemberPath="Date"   
            KeyMemberPath="Alias"   
            ValueMemberPath="ActivityCount" />
    </Window.Resources>

    <Grid Margin="0,0,2,-2">
        <ig:XamDataChart x:Name="theChart" Height="200">
            <ig:XamDataChart.Axes>
                <ig:CategoryXAxis x:Name="xAxis"   
                                       ItemsSource="{StaticResource grouped}"  
                                       Label="{}{Key}"/>
                <ig:NumericYAxis x:Name="yAxis" />
            </ig:XamDataChart.Axes>

            <ig:XamDataChart.Series>
                <ig:StackedColumnSeries x:Name="stack"  
                                             ItemsSource="{StaticResource grouped}"  
                                             XAxis="{Binding ElementName=xAxis}"  
                                             YAxis="{Binding ElementName=yAxis}"  
                                             AutoGenerateSeries="True"  
                                             >

                </ig:StackedColumnSeries>
            </ig:XamDataChart.Series>
        </ig:XamDataChart>


请建议如何将我获得的集合添加到
UsageCollection
类,或者如何使用它的替代方法。

UsageCollection
不封装
observeCollection
,它是继承的。封装

public class UsageCollection {
    protected ObservableCollection<UsageStatistics> theCollection;
}
公共类UsageCollection{
受保护的可观察的集合;
}
现在它已被包含,我们可以通过构造函数注入集合对象

public UsageCollection ( ObservableCollection<UsageStatistics> someCollection );
public UsageCollection(observeablecollection-someCollection);
如何将该集合分配给此类

要访问存储在XAML资源中的集合,请使用
FindResource()

顺便说一句:您可以在XAML中嵌入示例数据,而不是使用构造函数:

<Window.Resources>
    <comboSourceCase:UsageCollection x:Key="data" >
        <comboSourceCase:UsageStatistics Alias="A" ActivityCount="3" Date= "1/2/2012"></comboSourceCase:UsageStatistics
        <comboSourceCase:UsageStatistics Alias="C" ActivityCount="8" Date= "1/2/2012"></comboSourceCase:UsageStatistics
    </comboSourceCase:UsageCollection> 


下面的示例演示如何使用datagrid使用集合。如果它解决了你的问题,请告诉我

public partial class Win32533638 : Window
{
    public Win32533638()
    {
        InitializeComponent();

        DgrdUsageStatistics.ItemsSource = _getUsageStatisticsFromServer();
    }

    private UsageCollection _getUsageStatisticsFromServer()
    {
        UsageCollection items = new UsageCollection();
        items.Add(new UsageStatistics("D", 8, "1/2/2015"));
        items.Add(new UsageStatistics("A", 6, "1/2/2012"));

        return items;
    }
}
您的数据模板:

<Window.Resources>
        <DataTemplate x:Key="DataTemplate1">
            <Grid d:DesignWidth="295.187" d:DesignHeight="128.271" Height="76" Width="300">
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="52*"/>
                    <ColumnDefinition Width="57*"/>
                </Grid.ColumnDefinitions>
                <Grid.RowDefinitions>
                    <RowDefinition Height="44*"/>
                    <RowDefinition Height="45*"/>
                    <RowDefinition Height="52*"/>
                </Grid.RowDefinitions>
                <TextBlock HorizontalAlignment="Left" TextWrapping="Wrap" Text="Alias" VerticalAlignment="Top" Width="119" Margin="5,5,0,5"/>
                <TextBlock HorizontalAlignment="Left" Grid.Row="1" TextWrapping="Wrap" Text="Date" VerticalAlignment="Top" Width="119" Margin="5,5,0,5"/>
                <TextBlock HorizontalAlignment="Left" Grid.Row="2" TextWrapping="Wrap" Text="Activity Count" VerticalAlignment="Top" Width="119" Margin="5,5,0,5"/>
                <TextBlock Grid.Column="1" HorizontalAlignment="Left" TextWrapping="Wrap" Text="{Binding Alias}" VerticalAlignment="Top" Margin="5,5,0,5"/>
                <TextBlock Grid.Column="1" HorizontalAlignment="Left" Grid.Row="1" TextWrapping="Wrap" Text="{Binding Date}" VerticalAlignment="Top" Margin="5,5,0,5"/>
                <TextBlock Grid.Column="1" HorizontalAlignment="Left" Grid.Row="2" TextWrapping="Wrap" Text="{Binding ActivityCount}" VerticalAlignment="Top" Margin="5,5,0,5"/>
            </Grid>
        </DataTemplate>
    </Window.Resources>

您的XAML代码:

<DataGrid x:Name="DrgUsageWithTemplate" Margin="0 10 0 0" ItemsSource="{StaticResource UsgCollection}" AutoGenerateColumns="False" ItemTemplate="{DynamicResource DataTemplate1}">
            <DataGrid.Columns>
                <DataGridTemplateColumn Header="Usage Statistical Data" CellTemplate="{StaticResource ResourceKey=DataTemplate1}">

                </DataGridTemplateColumn>
            </DataGrid.Columns>
        </DataGrid>


“正如你所看到的,我可以在构造函数中静态地初始化它”-你确定吗?我正在构造函数中设置集合项。是的,但是如果这是你的意图,那么构造函数不是静态的?是否缺少
静态
修改器?“如何将该集合分配给此类?”-简单。只需将其作为成员添加到
usagentastics
u看到XAML有一行:?这是唯一一个调用构造函数的地方!!我的collection类只是在那里实例化的。所以奇怪的是我怎么不能在任何地方设置它?我如何将其添加为Usagentastics的成员?我的UsageCollection类是UsageStatistics类型项的集合。抱歉..术语错误。。那么,我想将其保留为继承?先生,我的示例数据将来自服务器端。因此,我需要能够在代码隐藏或视图模型中分配它。