Программное связывание в Silverlight
-
09-06-2019 - |
Вопрос
Ребята, я что-то упускаю из виду.Это продолжает поднимать голову, и я не знаю, что с этим происходит, поэтому надеюсь, что мои домашние смогут помочь.
Когда я работаю в Silverlight и создаю привязки в своем коде C#, они никогда не сохраняются во время работы приложения.Декларативные привязки из моего xaml кажутся нормальными, но я делаю что-то не так, когда создаю привязки на C#.Я надеюсь, что есть что-то совершенно очевидное, что я упускаю.Вот типичная привязка, которая разбивается:
TextBlock tb = new TextBlock();
Binding b = new Binding("FontSize");
b.Source = this;
tb.SetBinding(TextBlock.FontSizeProperty, b);
Решение 2
Похоже, по крайней мере, начиная с Silverlight 3.1, это больше не проблема.Во всяком случае, я не могу это воспроизвести.
Другие советы
Я только что попробовал именно тот код, который вы только что опубликовали, и он работал нормально, с некоторыми изменениями.Я считаю, что проблема в том, что элемент, который вы используете для вызова SetBinding, не является текстовым блоком, который вы хотите связать.Должен быть:
TextBlock tb = new TextBlock();
Binding b = new Binding("FontSize");
b.Source = this;
tb.SetBinding(TextBlock.FontSizeProperty, b);
Убедитесь, что у вас также есть общедоступное свойство FontSize типа double в «this».Если «это» является пользовательским элементом управления, я бы рекомендовал переименовать свойство, чтобы не скрывать унаследованный элемент.