ユーザーは、ボタンを押して動的にテキストボックスを追加するオプションがあり、各テキストボックスには検索対象から除外するディレクトリのパスを含むソートを作成しようとしています。これは、コードビハインドを使用して比較的簡単ですが、私の問題は、適切なMVVMでそれをやっている。動的テキストボックスのバインド
構造のための一般的なマークアップは次のとおりです。
<ScrollViewer >
<StackPanel>
<DockPanel LastChildFill="False">
<TextBox DockPanel.Dock="Left"/>
<Button DockPanel.Dock="Right"
Content="+"/>
</DockPanel>
</StackPanel>
</ScrollViewer>
ボタンをクリックすると、StackPanel
にTextBox
とButton
で新しいDockPanel
を追加します。一番下のボタンを除くすべてのボタンはマイナス記号に変わります。どうやってすべてのテキストボックスのテキストにバインドできますか?
一度/これが実現すれば、それを独自のコンポーネントにする方がよいでしょうか?
CS(ビューモデル)::
// INotifyPropertyChanged if you need, as well as full-properties with notification
public class Item
{
public string Text {get; set;}
}
public ObservableCollection<Item> Items { get; } = new ObservableCollection<Item>();
void OnCommandAdd() => Items.Add(new Item());
XAML(ビュー):
<ListBox ItemsSource="{Binding Items}">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBox Text="{Binding Text}" />
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
アイデアはにできるコントロールを使用することですあなたが始めるために
MVVMを使用することをお勧めします。解決策がコードビハインドで簡単な場合は、それを実行してください。 – toroveneno