Вот моя ситуация.У меня есть решение, в котором я набираю строку в текстовое поле, и после нажатия кнопки «Добавить» она заполняет список.
Теперь я хочу:
a) Сохранить эту строку вXML-файл немедленно.б) Когда откроется окно, я хочу отобразить данные из этого XML-файла в списке
Вот что я получил до сих пор:
Класс
public class Accounts : INotifyPropertyChanged
{
private string m_AccountName;
public event PropertyChangedEventHandler PropertyChanged;
public string AccountName
{
get { return m_AccountName; }
set
{
m_AccountName = value;
OnPropertyChanged("AccountName");
}
}
protected void OnPropertyChanged(string name)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(name));
}
}
}
}
Код позади
public partial class Account : Window
{
private ObservableCollection<Accounts> AccountList = new ObservableCollection<Accounts>();
public Account()
{
InitializeComponent();
this.accountListBox.ItemsSource = AccountList;
}
private void addBtn_Click(object sender, RoutedEventArgs e)
{
AccountList.Add(new Accounts { AccountName = accountaddTextBox.Text });
}
XAML
<ListBox DisplayMemberPath="AccountName" Height="164" HorizontalAlignment="Left" Margin="12" Name="accountListBox" VerticalAlignment="Top" Width="161" />
Этот код работает для заполнения списка после нажатия кнопки ДобавитьКнопка.
Я попытался добавить экземпляр XMLTextReader в Window_Loaded и использовать ArrayList, чтобы попытаться прочитать файл XML и загрузить его, но когда я использую ItemsSource, он возвращается с ошибкой, которая у меня естьиспользовать ItemControl.ItemsSource ...
Вот что я пробовал, но не получается:
private void Window_Loaded(object sender, RoutedEventArgs e)
{
XmlTextReader reader = new XmlTextReader("Accounts.xml");
ArrayList ar = new ArrayList();
// Loop over the XML file
while (reader.Read())
{
// Here we check the type of the node, in this case we are looking for element
if (reader.NodeType == XmlNodeType.Element)
{
// If the element is "accounts"
if (reader.Name == "Accounts")
{
ar.Add(reader.Value);
accountListBox.ItemsSource = ar;
}
}
}
reader.Close();
}