Вот моя ситуация. У меня есть решение, закодированное, когда я ввожу строку в текстовое поле, и после нажатия кнопки «Добавить» она заполняет список.Заполнение списка при загрузке окна
Теперь я хочу:
а) Сохраните эту строку в файл XML сразу. б) Когда откроется окно, я хочу, чтобы отобразить данные из этого XML-файла в ListBox
Вот что я получил до сих пор:
Класс
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 });
}
X ПОД
<ListBox DisplayMemberPath="AccountName" Height="164" HorizontalAlignment="Left" Margin="12" Name="accountListBox" VerticalAlignment="Top" Width="161" />
Этот код работает для заполнения ListBox после нажмите кнопку Добавить.
Я попытался добавить экземпляр 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();
}
я ошибся, я не получаю сообщение об ошибке, это просто ничего не показывает, а затем мой код, чтобы добавить текст больше не работает. Это имеет какое-то отношение к ItemsSource ... – Woody
Это сводится к привязке ArrayList к ListBox - все остальное в вашем вопросе (я думаю) не имеет значения. Вы пробовали использовать вышеприведенный код в новом решении? –