テキストボックスと送信ボタンがあるウィンドウがあります。送信ボタンを押すと、テキストボックスのデータがリストボックスに入力され、保存されます。Populate ListBox
これを行う最善の方法は何ですか?私は以前の質問からObservableCollectionを使って推薦を試みましたが、うまくいかないようです。
私はクラスを作成しました:
私のXAMLでバインディングを割り当てpublic class AccountCollection
{
private string accountName;
public string AccountName
{
get { return accountName; }
set { accountName = value; }
}
public AccountCollection(string accountName)
{
AccountName = accountName;
}
}
:
<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 "
に「文字列」から変換することはできませんと、「私は、クラスを作成したとき、私はdidnのことですテキストボックスからアカウント名について何も指定しないので、クラスが正しいかどうかわかりません。
私は基本的に混乱していて、何をすべきかわかりません。任意のヘルプは高く評価されます...
私はこのすべてをしたが、それはまだ動作していません。私は単純なものを逃しているに違いない。ここでの唯一の違いは、okBtn_ClickイベントでViewModelのインスタンスをインスタンス化しなければならないことです。 ViewModel vm =新しいViewModel(); vm.Accounts.Add(accountaddTextBox.Text); – Woody
ウィンドウのDataContextを設定しましたか? 'mainWindow.DataContext = new ViewModel();'すべてのクリックではなく、viewmodelのインスタンスを作成するために必要なのは1回だけです! –
はい。 'public Account() { InitializeComponent(); DataContext = new ViewModel(); } ' – Woody