Давайте просто посмотрим на один из списков, поскольку они в основном одинаковы.
Код, который нас интересует, таков:
<ListBox ItemsSource="{Binding Path=Applications,
UpdateSourceTrigger=PropertyChanged, Mode=OneWay}" />
Поскольку вы новичок в WPF, позвольте мне сказать, что вам, вероятно, не нужны UpdateSourceTrigger
или Mode
, что оставляет нас с этим:
<ListBox ItemsSource="{Binding Path=Applications}" />
Вы упомянули, что Applications является публичной собственностью в вашем коде. Вам нужно, чтобы он был DependencyProperty
, и вам нужно, чтобы он вызывал события при его изменении - большинство людей используют для этого ObservableCollection .
Так что у вашего кода будет что-то вроде это:
public ObservableCollection<string> Applications
{
get { return (ObservableCollection<string>)GetValue(ApplicationsProperty); }
set { SetValue(ApplicationsProperty, value); }
}
public static readonly DependencyProperty ApplicationsProperty =
DependencyProperty.Register("Applications",
typeof(ObservableCollection<string>), typeof(Window1),
new UIPropertyMetadata(null));
Затем, где вы хотите добавить это, вы будете делать что-то вроде этого:
this.Applications = new ObservableCollection<string>();
Applications.Add("Whatever");
Наконец, чтобы «простой» синтаксис привязки работал в XAML, я обычно меняю DataContext
в моем окне (или корневой элемент управления для файла, где бы я ни работал) на
<Window DataContext="{Binding RelativeSource={RelativeSource Self}}" ... >
...
Окно приложений будет обновляться автоматически.