我有一個JobItem對象,它裏面,我有:綁定列表框的ObservableCollection <T>不工作WPF
public ObservableCollection<string> BusinessUnit
{
get
{
return businessUnit;
}
set { businessUnit = value; }
}
現在用戶需要填寫一張表格,並添加多個業務部門。我創建了一個添加和刪除旁邊按鈕的列表框。添加按鈕打開一個對話框,提示用戶添加業務單位的名稱,然後將其添加到列表框中。這是我對這個代碼:
<my:ValidatingListBox Grid.Column="1" Grid.ColumnSpan="1" Grid.Row="5" Grid.RowSpan="1" x:Name="businessUnitBox" SelectionMode="Multiple" SelectionChanged="ValidatingListBox_SelectionChanged" IsSynchronizedWithCurrentItem="True">
<my:ValidatingListBox.ItemsSource>
<Binding Source="{StaticResource jobItemDataSource}" Path="BusinessUnit" Mode="TwoWay"/>
</my:ValidatingListBox.ItemsSource>
</my:ValidatingListBox>
<Button Style="{StaticResource addBtnStyle}" Grid.Column="2" Grid.Row="5" Name="addBusinessUnitBtn" Click="addBusinessUnitBtn_Click" />
<Button Style="{StaticResource removeBtnStyle}" Grid.Column="2" Grid.Row="5" Name="delBusinessUnitBtn" Click="delBusinessUnitBtn_Click" />
在後面的代碼,我的JobItem結合的形式,因爲我有綁定到其他JobItems(此結合作品)等文本框。
public NewJobDialog(int workOrderCounter)
{
InitializeComponent();
item = new JobItem();
base.DataContext = item();
businessUnitBox.DataContext = item.BusinessUnit;
}
然後,當我上添加按鈕點擊添加一個業務部門,我有這樣的代碼:
private void addBusinessUnitBtn_Click(object sender, RoutedEventArgs e)
{
AddBusinessUnitDialog addBusinessUnit = new AddBusinessUnitDialog();
addBusinessUnit.ShowDialog();
if (addBusinessUnit.DialogResult == true)
{
item.BusinessUnit.Add(addBusinessUnit.BusinessUnit());
}
}
private void delBusinessUnitBtn_Click(object sender, RoutedEventArgs e)
{
if (businessUnitBox.Items.Count > 0)
{
item.BusinessUnit.Remove((string)businessUnitBox.SelectedItem);
}
}
現在,當我運行該程序,我每次添加一個業務部門,它不在列表框中顯示。請給我一些類型的示例代碼,以瞭解如何才能使其發揮作用。謝謝。
是否有具有'JobItem'類的2個實例理由嗎?你不想用同一個嗎? – aqwert
其實不是,我正在重新編輯我粘貼的代碼,感謝您注意,我現在就更新它。 – Erika