我希望每次点击一个按钮时是否能够增加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;
}
执行此操作时,不会将我的字符串添加为单词,而是将字符串中的字母分隔为单独的标题。
答案 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提供了一个构造函数,它接受一个IEnumerable,所以用它来创建一个具有相同标题的新实例,然后添加你的新标题:
ObservableCollection<string> newCollection = new ObservableCollection<string>(Title);
newCollection.Add(theNewTitle)
Title = newCollection;