Я привязал элемент управления к свойству динамического типа, My MainWindow Class наследует от INotifyPropertyChanged, также определил метод OnPropertyChanged:
public event PropertyChangedEventHandler PropertyChanged;
private void OnPropertyChanged(String name)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(name));
}
}
мой xaml выглядит так
<ListBox DataContext="{Binding ElementName=UI}" Name="EquipmentKinds" ItemsSource=" {Binding system_slots}" Grid.Row="1" Margin="10, 10, 10, 10" SelectionChanged="EquipmentKinds_SelectionChanged"/>
<TextBox Name="EditEquipmentKinds" Grid.Row="2" Margin="10, 10, 10, 10" Height="25" TextChanged="EditEquipmentKinds_TextChanged" />
свойство system_slots объявлено как
public dynamic system_slots
{
get
{
if (_system != null)
{
return _system.equipment_kinds;
}
else
{
return null;
}
}
set { _system.equipment_kinds = value; OnPropertyChanged("system_slots"); OnPropertyChanged("system"); }
}
Каждый раз, когда я менял значение system_slots, я вызывал метод OnPropertyChanged.
Когда я например добавить новый слот в system_slots, мне нужно установить для system_slots значение null, если я хочу, чтобы список обновлялся, например. мой код для этого
dynamic new_system = CreateCopyOfSystem(system);
new_system.equipment_kinds.Add("New Slot".ToRubyString());
system_slots = null;
system_slots = new_system.equipment_kinds;
OnPropertyChanged("system");
OnPropertyChanged("system_slots");
Если я не установил для system_slots значение null, он не обновляется, любая помощь, так как я новичок в WPF ??
EDIT: What i tried is to use ObservableCollection, DependencyProperties, and I found here an example where someone Get Binding and trigger it manually but still it didn't help.
Все динамические типы - это рубиновые объекты из библиотеки IronRuby (имеется в виду массивы и хэши для коллекций пользовательских классов). Если я понимаю WPF, элемент управления должен обновляться, если он привязан к Object, и я вызываю OnPropertyChange (Object_name), но он не обновляется, пока я не изменю Object на null. Задница За ошибку с observableCollection было что-то с Coversion от RubyArray до ObservableCollection.
ToRubyString()
. В примере я пробовал использовать простые строковые значения, и он работает с VS2010 и .Net 4.0. - person Rohit Vats   schedule 10.08.2014equipment_kinds
какого типа в вашей реальной реализации? - person Rohit Vats   schedule 10.08.2014