2012-05-18 100 views
3

我試圖創建一個跟蹤JobItems的應用程序。在應用程序中,用戶點擊「New Job」按鈕創建一個JobItem。然後彈出一個新窗口(NewJobWindow),用戶必須填寫關於作業的信息。所需的一些信息有多個值。例如,您可以在工作項目中添加多個(字符串)業務單位。我所做的是爲用戶添加一個列表框來添加其中的所有業務單元。我不知道該怎麼做的是綁定這個業務單元的列表框,這樣每次我在其中添加一個項目時,JobItem中的Observable Collection BusinessUnits會在我單擊提交按鈕時添加相同的項目。我需要知道如何使用數據綁定來做到這一點。我已經搜索谷歌尋找類似的答案,但找不到任何。將列表框綁定到WPF中的類型字符串的Observable集合

編輯

這是我在我的JobItem類,我需要一個用戶在NewJobWindow提交多個BusinessUnits每次都得到更新:

public ObservableCollection<string> BusinessUnit 
    { 
     get { return businessUnit; } 
     set 
     { 
      if(!BusinessUnit.Equals(value)) 
      { 
       businessUnit = value; 
       OnPropertyChanged("BusinessUnit"); 
      } 
     } 

    } 

這是什麼JobWindow在xaml中看起來像在列表框中添加商務單元。我創建了一個ValidatingListBox只是這樣我就可以驗證用戶插入列表框:

<Label Grid.Column="0" Grid.Row="5">Business Unit:</Label> 
     <my:ValidatingListBox Grid.Column="1" Grid.ColumnSpan="1" Grid.Row="5" Grid.RowSpan="1" x:Name="businessUnitBox" SelectionMode="Multiple" SelectionChanged="ValidatingListBox_SelectionChanged" ItemsSource="{Binding Path=BusinessUnit}" > 
     <my:ValidatingListBox.ValidationListener> 
       <Binding RelativeSource="{RelativeSource FindAncestor, AncestorType=Window}" Path="BusinessUnit" Mode="TwoWay"> 
       <Binding.ValidationRules> 
        <my:ListBoxValidationRule ValidatesOnTargetUpdated="True" ></my:ListBoxValidationRule> 
       </Binding.ValidationRules> 
      </Binding> 
     </my:ValidatingListBox.ValidationListener> 
    </my:ValidatingListBox> 

回答

4

內的項目綁定很簡單:

<ListBox ItemsSource="{Binding MyCollection}" /> 

其中MyCollection的是的ObservableCollection類型的屬性。您不需要將項目添加到ListBox,將它們添加到集合,數據綁定將完成剩下的工作。

+0

用戶需要一個UI來在窗口內添加業務單元,這就是爲什麼我需要在列表框中添加項目,然後需要更新對象內的集合。我將如何引用JobItem對象中的集合?請檢查我的編輯,也許你會明白我想要做的更好。 – Erika

+0

@Erika,我強烈建議你閱讀關於MVVM模式。 UI只是一個演示文稿。邏輯(即「添加業務單位」)必須駐留在視圖模型中,而不是視圖(UI)。 – Dennis

相關問題