簡體   English   中英

單擊創建/增加ObservableCollection

[英]Create/Increment ObservableCollection On Button Click

我想看看是否有可能每次單擊按鈕時都可以增加ObservableCollection

ObservableCollection<string> _title = new ObservableCollection<string>();

public ObservableCollection<string> Title
{
    get { return _title; }
    set
    {
        _title = value;
        OnPropertyChanged(() => Title);
    }
}

如上面的C#代碼所示,我有一個Title的ObservableCollection 當前,當我添加一個新標題時,每個標題都進入相同的集合中。 但是,我要實現的目標是: 每次按下“添加標題”按鈕時,都會添加一個標題並創建一個新的 ObservableCollection 這可能嗎,怎么辦?

EDIT1

目前,我動態創建了Textboxes ,然后將想要的任何字符串添加到該Textbox 從那里,我將名為“ Content”的Stackpanel保存到.txt文件中。 在此文件中,它將保存已創建的Textboxs 由於綁定了文本框,它不會將字符串保存到該文件中 )。 然后,我認為這些字符串將保存到列表中,並且當我從.txt文件加載Stackpanel備份時,該字符串將被添加回Textbox

EDIT2

我更改了一些代碼:

public ViewModel()
{
    this.AddTitleCommand = new RelayCommand(new Action<object>((o) => OnAddTitle()));
}

private void OnAddTitle()
{

    NewTitle += titleName;
}

在執行此操作時,它不是將我的字符串添加為單詞,而是將字符串中的字母分隔為單獨的標題。

如果我對您的理解正確,那么每次按下Button ,您都希望將新string添加到新集合中。 然后,您說要在每個集合中添加其他值……這聽起來像是您試圖以錯誤的方式滿足您的要求,但是您沒有告訴我們這些是什么,因此我們無法為您提供幫助那。 每次可以通過以下方式添加新集合:

private string newTitle = string.Empty;
private ObservableCollection<ObservableCollection<string>> collections = new 
    ObservableCollection<ObservableCollection<string>>();

public ObservableCollection<ObservableCollection<string>> Collections
{
    get { return collections; }
    set { collections = value; OnPropertyChanged(() => Collections); }
}

public string NewTitle
{
    get { return newTitle; }
    set { newTitle = value; OnPropertyChanged(() => NewTitle); }
}

public void AddCollection()
{
    ObservableCollection<string> collection = new ObservableCollection<string>();
    collection.Add(NewTitle);
    Collections.Add(collection);
}

NewTitle屬性可以是綁定到UI中的TextBox數據,允許用戶輸入新值,並且當按下Button時, AddCollection方法會將其添加到新集合中,然后將其添加到Collections集合中。

我仍然認為這不是一個好主意。


更新>>>

請停止您正在做的事情……程序不是那樣編寫的。 我們保存數據, string s 而不是 UI元素。 保存UI元素以及您不關心的所有其他屬性值絕對沒有意義。每次在數據加載時都可以重復使用在TextBox中顯示string s的任何方法。

ObservableCollection提供了一個采用IEnumerable的構造函數,因此可使用它來創建具有相同標題的新實例,並在其后添加新標題:

ObservableCollection<string> newCollection = new ObservableCollection<string>(Title);
newCollection.Add(theNewTitle)
Title = newCollection;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM