第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

.net c#限制observablecollection中的條目數(shù)

.net c#限制observablecollection中的條目數(shù)

C#
動漫人物 2021-05-10 09:21:41
我有一個WPF應(yīng)用程序,其中UI具有一個列表框。列表框具有ObservableCollection的綁定。日志類實現(xiàn)INotifyPropertyChanged。該列表將顯示應(yīng)用程序的連續(xù)日志記錄。只要該應(yīng)用程序正在運行。ObservableCollection的大小不斷增長。一段時間后,出現(xiàn)內(nèi)存不足異常。我想在列表控件中顯示最新的1000個條目。關(guān)于此的任何建議將有很大幫助?。AML:                    <DataGrid AutoGenerateColumns="False" SelectedValue="{Binding SelectedLog}" SelectionUnit="FullRow" SelectionMode="Single" Name="dataGridLogs"                       ItemsSource="{Binding Path=LogList}"  CanUserReorderColumns="True" CanUserResizeRows="True" CanUserDeleteRows="False"  IsReadOnly="True"                      CanUserAddRows="False" EnableColumnVirtualization="True" EnableRowVirtualization="True" SelectionChanged="grid_SelectionChanged">                 <DataGrid.Columns>                    <DataGridTextColumn Header="Time Stamp" Binding="{Binding StrTimeStamp, Mode=OneWay}" Width="Auto"/>                    <DataGridTextColumn Header="Action" Binding="{Binding Action, Mode=OneWay}" Width="Auto"/>            </DataGrid>ViewModel:    public ObservableCollection<LogData> LogList    {        get        {            if (logList == null)            {                logList = new ObservableCollection<LogData>();            }            return logList;        }        set        {            logList = value;            OnPropertyChanged("LogList");        }    }模型:     public class LogData : INotifyPropertyChanged{    public LogData()    {    }    private String timestamp = string.Empty;    public String StrTimestamp    {        get        {            if (timestamp == null)                return string.Empty;            return timestamp ;        }        set        {            timestamp = value;        }    }    public string Action    {       get;set;    }}
查看完整描述

3 回答

?
素胚勾勒不出你

TA貢獻1827條經(jīng)驗 獲得超9個贊

您可以創(chuàng)建自己的大小受限的可觀察集合類。這樣的事情應(yīng)該可以幫助您入門:


public class LimitedSizeObservableCollection<T> : INotifyCollectionChanged

{        

    private ObservableCollection<T> _collection;

    private bool _ignoreChange;


    public LimitedSizeObservableCollection(int capacity)

    {

        Capacity = capacity;

        _ignoreChange = false;

        _collection = new ObservableCollection<T>();

        _collection.CollectionChanged += _collection_CollectionChanged;

    }


    public event NotifyCollectionChangedEventHandler CollectionChanged;


    public int Capacity {get;}


    public void Add(T item)

    {

        if(_collection.Count = Capacity)

        {

            _ignoreChange = true;

            _collection.RemoveAt(0);

            _ignoreChange = false;

        }

        _collection.Add(item);


    }


    private void _collection_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e)

    {

        if(!_ignoreChange)

        {

            CollectionChanged?.Invoke(this, e);

        }

    }

}

當然,您可能必須公開更多方法,但是我希望這足以使您理解。


查看完整回答
反對 回復(fù) 2021-05-23
?
蕪湖不蕪

TA貢獻1796條經(jīng)驗 獲得超7個贊

可以通過此類輕松完成:


public class LimitedSizeObservableCollection<T> : ObservableCollection<T>

{

    public int Capacity { get; }


    public LimitedSizeObservableCollection(int capacity)

    {

        Capacity = capacity;

    }


    public new void Add(T item)

    {

        if (Count >= Capacity)

        {

            this.RemoveAt(0);

        }

        base.Add(item);

    }

}


查看完整回答
反對 回復(fù) 2021-05-23
  • 3 回答
  • 0 關(guān)注
  • 686 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號