У меня есть объект JobItem, и внутри него, у меня есть:Binding Listbox к 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);
}
}
Теперь, когда я запускаю программу, каждый раз, когда я добавить бизнес-единицы, это делает не отображается в списке. Пожалуйста, дайте мне некоторый тип кода примера, как я смогу заставить это работать. Благодарю.
Есть ли причина для 2 экземпляра класса 'JobItem'? Разве вы не хотите использовать тот же самый? – aqwert
На самом деле нет, я переделывал код, который я вставил, спасибо, что заметил, теперь я его обновлю. – Erika