2016-07-27 158 views
1

我想要製作一種排序形式,用戶可以選擇按動按鈕動態添加更多文本框,每個文本框包含要從搜索中排除的目錄路徑。這是使用代碼隱藏相對微不足道的,但我的問題是在適當的MVVM中執行它。動態文本框綁定

的結構一般的標記是

<ScrollViewer > 
    <StackPanel> 
     <DockPanel LastChildFill="False"> 
      <TextBox DockPanel.Dock="Left"/> 
      <Button DockPanel.Dock="Right" 
        Content="+"/> 
     </DockPanel> 
    </StackPanel> 
</ScrollViewer> 

單擊該按鈕將與TextBoxButton添加一個新的DockPanelStackPanel。除最底部的所有按鈕都將變爲負號。我怎樣才能以某種方式綁定到所有文本框的文本?另外,一旦/如果我得到這個工作,是否更好地將它製作成它自己的組件?

+2

我會推薦你​​使用MVVM,它可以幫助你,讓事情變得更簡單。如果解決方案在代碼隱藏方面更容易,那就去做吧。 – toroveneno

回答

3

快速僞代碼,讓您開始:

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> 

的想法是使用能夠控制顯示列表(例如ItemsControl)和查看模型中的項目集合。通過向該集合添加項目來添加新元素以進行查看。

全部TextBox es將有Text綁定到項目的相應屬性。