Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Помогите с DependencyProperty
|
|||
|---|---|---|---|
|
#18+
Разбирался как работают DependencyProperty и наткнулся на определенного рода проблему: Сделал новое окно, определил в нем DependencyProperty Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. а дальше совершенно непонятно как к нему обратится из xaml разметки, делаю так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. естественно становится видным и могу обратится, но при этом получаю ошибку: Код: plaintext 1. В итоге получаем, что из xaml для окна можно обратится к DependencyProperty определенным в классах родителях, но это как то неправильно мне кажется. Подскажите, что не так делаю? PS: понятное дело, что для элементов расположенных внутри окна мы так и так сделаем класс и тогда в разметке будем иметь доступ к DependencyProperty определенным в нем, но как быть с элементами самого верхнего уровня? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2011, 13:02 |
|
||
|
Помогите с DependencyProperty
|
|||
|---|---|---|---|
|
#18+
xpoft2010, Вы понимаете что тут: Код: plaintext 1. 2. 3. 4. Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2011, 15:38 |
|
||
|
Помогите с DependencyProperty
|
|||
|---|---|---|---|
|
#18+
не совсем понял вопрос, - Это стандартное объявление DependencyProperty. Суть моего вопроса не в этом, а вот в чем: верхний элемент окна это <Window> - класс который не содержит у себя описанного мной DependencyProperty TestProperty. Когда я указываю в кач-ве верхнего элемента мой класс (наследник от Window), то получаю ошибку: авторError 1 Циклическая зависимость между базовыми классами 'DependencyPropertyTest.DepPropWindow' и 'DependencyPropertyTest.DepPropWindow' C:\Users\Serjick\documents\visual studio 2010\Projects\DependencyPropertyTest\DependencyPropertyTest\DepPropWindow.xaml.cs 19 26 DependencyPropertyTest ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2011, 16:00 |
|
||
|
Помогите с DependencyProperty
|
|||
|---|---|---|---|
|
#18+
Вообще вас понесло не в ту степь. Начните с самого простого примера привязки: Код: plaintext 1. 1. Вы указали для текст бокса имя x:Name="textBox" и он стал виден в коде окна. 2. Затем вы указали для кнопки ElementName=textBox. При этом привязка ищет в коде окна елемент управления с именем textBox. Если бы мы не указывали этого, то привязка бы взяла объект из свойства DataContext кнопки и работало бы с ним. К слову сказать, дата контекст используется при реализации патерна MVVM. Еще есть вариант когда в место ElementName указывается Source, в таком случае привязка ищет в классе окна проперти по указаному имени. И потом работает с обьектом который возвращает проперти, если там конечно объект. 3. Дальше вы указали Path=Text. Привязка берет значение этого проперти и присваивает его в Content кнопки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2011, 16:01 |
|
||
|
Помогите с DependencyProperty
|
|||
|---|---|---|---|
|
#18+
xpoft2010не совсем понял вопрос, - Это стандартное объявление DependencyProperty. Суть моего вопроса не в этом, а вот в чем: верхний элемент окна это <Window> - класс который не содержит у себя описанного мной DependencyProperty TestProperty. Когда я указываю в кач-ве верхнего элемента мой класс (наследник от Window), то получаю ошибку: авторError 1 Циклическая зависимость между базовыми классами 'DependencyPropertyTest.DepPropWindow' и 'DependencyPropertyTest.DepPropWindow' C:\Users\Serjick\documents\visual studio 2010\Projects\DependencyPropertyTest\DependencyPropertyTest\DepPropWindow.xaml.cs 19 26 DependencyPropertyTest У вас есть проперти, которое создает рекурсию (!!!). В какой-то момент этому проперти что-то присваивается (а именно при вызове статического метода Register, он там значение по умолчанию выставляет в проперти) и естественно приложение вылетает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2011, 16:06 |
|
||
|
Помогите с DependencyProperty
|
|||
|---|---|---|---|
|
#18+
Смотреть как работают Binding'и можно было меня и к RTFM послать ;) А мне хочется получить ответ на вопрос: Как в xaml разметке добраться до DependencyProperty описанного в классе этого окна? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2011, 16:09 |
|
||
|
Помогите с DependencyProperty
|
|||
|---|---|---|---|
|
#18+
xpoft2010, нэймспейс локальный объявил? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2011, 16:10 |
|
||
|
Помогите с DependencyProperty
|
|||
|---|---|---|---|
|
#18+
ЗЫ в смысле правильно объявил? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2011, 16:11 |
|
||
|
Помогите с DependencyProperty
|
|||
|---|---|---|---|
|
#18+
Руки-крюкиxpoft2010не совсем понял вопрос, - Это стандартное объявление DependencyProperty. Суть моего вопроса не в этом, а вот в чем: верхний элемент окна это <Window> - класс который не содержит у себя описанного мной DependencyProperty TestProperty. Когда я указываю в кач-ве верхнего элемента мой класс (наследник от Window), то получаю ошибку: пропущено... У вас есть проперти, которое создает рекурсию (!!!). В какой-то момент этому проперти что-то присваивается (а именно при вызове статического метода Register, он там значение по умолчанию выставляет в проперти) и естественно приложение вылетает. Ну вот как раз и подобрались, к тому, а как же сделать так, чтобы я увидел св-во Test и оно стало доступным для Binding'а кнопке? PS: Приложение не вылетает, компилятор проект не выпускает при таком подходе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2011, 16:12 |
|
||
|
Помогите с DependencyProperty
|
|||
|---|---|---|---|
|
#18+
ШайтанЗЫ в смысле правильно объявил? :) да, и руками вводил и intelli sens'ом выбирал, мало-ли, вдруг ошибочка закралась. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2011, 16:14 |
|
||
|
Помогите с DependencyProperty
|
|||
|---|---|---|---|
|
#18+
xpoft2010, Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2011, 16:15 |
|
||
|
Помогите с DependencyProperty
|
|||
|---|---|---|---|
|
#18+
В коде я могу добраться до св-ва, а в xaml? Главная проблема в этом заключается, что там то его не видно, потому что класс Window не имеет в своем арсенале такого св-ва. Причем вот так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2011, 16:22 |
|
||
|
Помогите с DependencyProperty
|
|||
|---|---|---|---|
|
#18+
xpoft2010, Весь код покажите. И покажите где вы хотите заюзать ваше проперти. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2011, 16:26 |
|
||
|
Помогите с DependencyProperty
|
|||
|---|---|---|---|
|
#18+
xpoft2010, Циклическая зависимость здесь <local: DepPropWindow x:Class="DependencyPropertyTest. DepPropWindow " ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2011, 16:27 |
|
||
|
Помогите с DependencyProperty
|
|||
|---|---|---|---|
|
#18+
xpoft2010, Кароче вы меня запутали окончательно=) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2011, 16:31 |
|
||
|
Помогите с DependencyProperty
|
|||
|---|---|---|---|
|
#18+
как вариант - промежуточный базовый класс Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. <local:TestedWindow x:Class="DependencyPropertyTest.DepPropWindow" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2011, 16:31 |
|
||
|
Помогите с DependencyProperty
|
|||
|---|---|---|---|
|
#18+
LRxpoft2010, Циклическая зависимость здесь <local: DepPropWindow x:Class="DependencyPropertyTest. DepPropWindow " Угу, циклическая со всех сторон: так компилятор не выпускает, а если написать: Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2011, 16:32 |
|
||
|
Помогите с DependencyProperty
|
|||
|---|---|---|---|
|
#18+
xpoft2010... В итоге получаем, что из xaml для окна можно обратится к DependencyProperty определенным в классах родителях, но это как то неправильно мне кажется. Подскажите, что не так делаю? PS: понятное дело, что для элементов расположенных внутри окна мы так и так сделаем класс и тогда в разметке будем иметь доступ к DependencyProperty определенным в нем, но как быть с элементами самого верхнего уровня? Да, об этом писал тут. ЗЫ: Прилагается весь проект. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2011, 16:34 |
|
||
|
Помогите с DependencyProperty
|
|||
|---|---|---|---|
|
#18+
LRкак вариант - промежуточный базовый класс Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. <local:TestedWindow x:Class="DependencyPropertyTest.DepPropWindow" так однозначно будет работать, просто неужели нет возможности сразу достать? А если в проекте 200-300 окон и для каждого надо создавать разные DP, конечно маловероятна такая необходимость, но все таки=) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2011, 16:38 |
|
||
|
Помогите с DependencyProperty
|
|||
|---|---|---|---|
|
#18+
xpoft2010Да, об этом писал тут.да, недосмотрел... ну, тогда (как еще один вариант) попробуйте Attached Property Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. local:MainWindow.Test="Collapsed" правда, дотягиваться до него не очень if (DepPropWindow.GetTest(this) == Visibility.Collapsed) { System.Diagnostics.Debug.WriteLine("Collapsed!"); } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2011, 17:15 |
|
||
|
Помогите с DependencyProperty
|
|||
|---|---|---|---|
|
#18+
и в замеле local:MainWindow.Test="Collapsed" local:DepPropWindow.Test="Collapsed" (MainWindow - в моем примерчике) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2011, 17:19 |
|
||
|
Помогите с DependencyProperty
|
|||
|---|---|---|---|
|
#18+
Вот что еще по теме нашел на GotDotNet http://www.gotdotnet.ru/forums/14/110081/520205/#post520205 , там в рассуждениях показано как вытащить св-во через ресурс, но в этом случае непонятно как обновлять целевое св-во забинденного объекта на этот ресурс. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2011, 11:05 |
|
||
|
Помогите с DependencyProperty
|
|||
|---|---|---|---|
|
#18+
@автор если тебе необходимо забиндиться на проперти родителя, необходимо сделать всего лишь Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2011, 13:13 |
|
||
|
Помогите с DependencyProperty
|
|||
|---|---|---|---|
|
#18+
извиняйте, не много промахнулся. нужно конечно же биндиться на саму пропертю, а не на DependencyProperty Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2011, 15:52 |
|
||
|
Помогите с DependencyProperty
|
|||
|---|---|---|---|
|
#18+
уТКа@автор если тебе необходимо забиндиться на проперти родителя, необходимо сделать всего лишь Код: plaintext 1. Может я ошибаюсь, но DataContext у дочернего контрола это DataContext родительского контрола, а не сам родительский класс? авторизвиняйте, не много промахнулся. нужно конечно же биндиться на саму пропертю, а не на DependencyProperty Код: plaintext 1. Собственно так будет работать если написать в конструкторе: this.DataContext = this; В общем то да, принимается такой вариант. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2011, 16:31 |
|
||
|
|

start [/forum/topic.php?fid=21&msg=37093409&tid=1442478]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
35ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
59ms |
get tp. blocked users: |
1ms |
| others: | 11ms |
| total: | 144ms |

| 0 / 0 |
