У меня есть окно с текстовым полем и кнопка отправки. При нажатии кнопки «Отправить» данные в текстовом поле должны заполняться в списке и сохраняться.Заполнение ListBox
Каков наилучший способ сделать это? Я попробовал рекомендацию (используя ObservableCollection) из более раннего вопроса, который у меня был, но я не могу заставить его работать. Я попытался его реализации, как это:
Я создал класс:
public class AccountCollection
{
private string accountName;
public string AccountName
{
get { return accountName; }
set { accountName = value; }
}
public AccountCollection(string accountName)
{
AccountName = accountName;
}
}
Assigned связывание в моем XAML:
<ListBox ItemsSource="{Binding AccountName, Mode=TwoWay}" IsSynchronizedWithCurrentItem="True" Height="164" HorizontalAlignment="Left" Margin="12" Name="accountListBox" VerticalAlignment="Top" Width="161" SelectionChanged="accountListBox_SelectionChanged" />
... и, наконец, когда пользователь нажимает кнопку отправить из другого окна, которое содержит кнопку «Отправить» и текстовое поле:
private void okBtn_Click(object sender, RoutedEventArgs e)
{
BindingExpression expression = okBtn.GetBindingExpression(accountaddTextBox.Text);
expression.UpdateSource();
}
Но, увы, я получаю нет нигде. Я получаю сообщение об ошибке в разделе GetBindingExpression:
Аргумент 1: не удается преобразовать из «строки» в «System.Windows.DependencyProperty»
Что для меня очевидно, в том, что, когда я создал класс I Ждут» t указать что-либо о имени учетной записи из текстового поля, поэтому я даже не знаю, правильный ли класс.
Я в основном смущен и не знаю, что делать. Любая помощь будет оценена по достоинству ...
Я сделал все это, но он все еще не работает. Я должен пропустить что-то простое. Единственное отличие здесь в том, что мне пришлось создать экземпляр ViewModel экземпляра okBtn_Click. ViewModel vm = new ViewModel(); vm.Accounts.Add (accountaddTextBox.Text); – Woody
Вы установили свой DataContext своего окна? 'mainWindow.DataContext = new ViewModel();' Вам нужно только один раз создать экземпляр viewmodel, а не на каждом клике! –
Да. 'public Account() { InitializeComponent(); DataContext = new ViewModel(); } ' – Woody