2

У меня есть класс, который наследует от DynamicObject, который имеет помимо динамических свойств некоторые статически определенные свойства. Статически определенные свойства связываются в DataTemplate без проблем, но не с динамическими свойствами.Динамическое свойство DynamicObject не связывается

Я использую Silverlight для WP8 - не уверен, что это та же проблема для WPF.

Поддерживается ли привязка для DynamicObjects?

EDIT: вот выдержка из кода:

DynamicObject класс ItemContent:

public class ItemContent : DynamicObject, INotifyPropertyChanged 
{ 
    private Dictionary<string, object> propertyBag = new Dictionary<string, object>(); 

    // Statically-defined Property 
    public string SProperty { get; set; } 

    public override bool TryGetMember(GetMemberBinder binder, out object result) 
    { 
     return propertyBag.TryGetValue(binder.Name, out result); 
    } 

    public override bool TrySetMember(SetMemberBinder binder, object value) 
    { 
     if (propertyBag.ContainsKey(binder.Name)){ 
      propertyBag[binder.Name] = value; 
     } else { 
      propertyBag.Add(binder.Name, value); 
     } 

     RaisePropertyChanged(binder.Name); 

     return true; 
    } 

    public override IEnumerable<string> GetDynamicMemberNames() 
    { 
     return propertyBag.Keys; 
    } 
// ... omitted for brevity 
} 

XAML:

<DataTemplate> 
<StackPanel> 
    <TextBlock Text="{Binding SProperty}"/> 
    <TextBlock Text="{Binding DProperty}"/> 
</StackPanel> 
</DataTemplate> 

отрывок из ViewModel:

dynamic i1 = new ItemContent() { SProperty = "static property" }; 
i1.DProperty = "dynamic property"; 

ObservableCollection<ItemContent> Items = new ObservableCollection<ItemContent>(){ i1 }; 
+0

Поддерживается. Почтовый код, если вам нужна дополнительная помощь. – mdm20

+0

@ mdm20, я добавил соответствующие разделы кода. –

ответ

1

Похоже, в Silverlight есть ошибка.

Here's the report.

Вкладка «обходной» эта страница содержит 4 различных обходные пути, каждый из которых имеет свои плюсы и минусы.

+0

Я использовал «этот [ключ]' »обходной путь –

+0

К сожалению, кажется, что ссылка мертва. Поэтому лучше включить обходные пути в ваш ответ, если это вообще возможно. –

+0

Исправлена ​​ссылка. – Soonts

Смежные вопросы