创建/增加ObservableCollection按钮单击

时间:2014-01-17 09:38:56

标签: c# wpf observablecollection increment

我希望每次点击一个按钮时是否能够增加ObservableCollection

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

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

如上面的C#代码所示,我有一个ObservableCollection作为标题。目前,当我添加新标题时,每个标题都会进入同一个集合。但是,我的目标是;每次按下“添加标题”按钮,都会添加标题,并创建 ObservableCollection。这有可能,怎么办呢?

EDIT1

目前我动态创建Textboxes,然后将{I}想要的任何字符串添加到Textbox。从那里,我将名为“内容”的Stackpanel保存到.txt文件中。在此文件中,它将保存已创建的Textboxs。 (由于文本框被绑定,它不会将字符串保存到该文件中)。然后我认为字符串将保存到列表中,当我从Stackpanel文件加载.txt时,字符串将被添加回Textbox

EDIT2

我改变了一些代码:

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

private void OnAddTitle()
{

    NewTitle += titleName;
}

执行此操作时,不会将我的字符串添加为单词,而是将字符串中的字母分隔为单独的标题。

2 个答案:

答案 0 :(得分:3)

如果我理解正确,每次按下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集合中。

我仍然认为这不是不是一个好主意。


更新&gt;&gt;&gt;

请停止你正在做的事......程序不是那样写的。我们保存数据,string s,不是 UI元素。保存UI元素以及您不感兴趣的所有额外属性值绝对没有意义。无论您在string es中显示TextBox s的方法是什么,每次都可以重复使用数据已加载。

答案 1 :(得分:1)

ObservableCollection提供了一个构造函数,它接受一个I​​Enumerable,所以用它来创建一个具有相同标题的新实例,然后添加你的新标题:

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