Лучший способ получить этот тип поведения - это использовать DependencyProperty и привязки.
В вашем файле класса создайте DP следующим образом:
#region MyList dependency property
public static readonly DependencyProperty MyListProperty = DependencyProperty.Register("MyList", typeof(ObservableCollection<String>), typeof(Window1));
public ObservableCollection<String> MyList
{
get { return (ObservableCollection<String>) GetValue(MyListProperty); }
set { SetValue(MyListProperty, value); }
}
#endregion
Затем в вашей привязке XAMLдля этого DP, например, так:
<ListBox ItemSource={Binding Path=MyList, ElementName=MyWindow} Height="898" Name="lstEntity" Width="291" ItemTemplate="{StaticResource listBoxTemplate}" SelectionChanged="lstEntity_SelectionChanged"/>
, где "MyWindow" - это x: имя корневого окна в вашем XAML-файле (вы, конечно, также можете использовать текст данных как шаблон MVVM :)
Тогда, если вы хотите добавить / удалить элементы из своего кода, вы просто получите доступ к списку напрямую:
MyList.Clear();
MyList.Add("My New String");
Вам, конечно, также необходимо изменить общий тип коллекции, чтобы он был вашимсобственный класс ...