powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Как связать 2 DependencyProperty определенных в класса напрямую от DependencyObject?
8 сообщений из 8, страница 1 из 1
Как связать 2 DependencyProperty определенных в класса напрямую от DependencyObject?
    #37669352
xpoft2010
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!

Недавно буквально налетел на подводный камень WPF, почему то после прочтения книги MaкДональда была строгая уверенность, что так делать можно.

Имеется 2 класса наследника от DependencyObject, в каждом из них определено по 1 DependencyProperty. Оказалось что нельзя напрямую связать Binding'ом эти 2 св-ва! Более того нельзя определить Binding ни для одного DepProperty определенного в классе напрямую унаследованном от DependencyObject.

При попытке сделать Binding получаю ошибку:
Код: c#
1.
Cannot find governing FrameworkElement or FrameworkContentElement for target element.



Вот xaml разметка, код классов можно посмотреть в исходниках, но там ничего инетересного, просто 2 класса и по 1 DependencyProperty в каждом.

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
...
        <HeaderedContentControl Header="Здесь привязываю IsChecked к св-ву IsMyActive(Все работает отлично!)">
            <StackPanel>
                <CheckBox Content="Check" IsChecked="{Binding ElementName=evm, Path=IsMyActive}"/>
                <ContentControl>
                    <local:EditVM x:Name="evm" IsMyActive="False"/>
                </ContentControl>
            </StackPanel>
        </HeaderedContentControl>

        <HeaderedContentControl Header="Здесь пытаюсь IWillChange привязать к св-ву IsChecked моего CheckBox'а(Ничего не выходит!)">
            <local:VM IWillChange="{Binding ElementName=Check, Path=IsChecked}"/>
        </HeaderedContentControl>
...



Исходники прилагаются.
...
Рейтинг: 0 / 0
Как связать 2 DependencyProperty определенных в класса напрямую от DependencyObject?
    #37669378
xpoft2010
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Никто не знает? В этом случае получается, что DependencyProperty определенные в классах унаследованных от DependencyObject теряют полностью свою актуальность... это же бред полный...
...
Рейтинг: 0 / 0
Как связать 2 DependencyProperty определенных в класса напрямую от DependencyObject?
    #37669397
Фотография уТКа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xpoft2010,

авторIWillChange="{Binding ElementName=Check , Path=IsChecked}
где собственно элемент с этим именем?

нет элемента - не будет работать!
...
Рейтинг: 0 / 0
Как связать 2 DependencyProperty определенных в класса напрямую от DependencyObject?
    #37669417
xpoft2010
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
сорри, много вариантов пробовал, не тот выложил, но в любом случае дело не в этом вот исправленный вариант, аналогичная ситуация.


Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
...
<HeaderedContentControl Header="Здесь привязываю IsChecked к св-ву IsMyActive(Все работает отлично!)">
            <StackPanel>
                <CheckBox x:Name="Check1" Content="Check" IsChecked="{Binding ElementName=evm, Path=IsMyActive}"/>
                <ContentControl>
                    <local:EditVM x:Name="evm"/>
                </ContentControl>
            </StackPanel>
        </HeaderedContentControl>

        <HeaderedContentControl Header="Здесь пытаюсь IWillChange привязать к св-ву IsChecked моего CheckBox'а(Ничего не выходит!)">
            <local:VM x:Name="my1" IWillChange="{Binding ElementName=Check1, Path=IsChecked}"/>
        </HeaderedContentControl>
...



Код: c#
1.
2.
System.Windows.Data Error: 2 : Cannot find governing FrameworkElement or FrameworkContentElement for target element. BindingExpression:Path=IsChecked; DataItem=null; target element is 'EditVM' (HashCode=55303835); target property is 'IsMyActive' (type 'Boolean')
System.Windows.Data Error: 2 : Cannot find governing FrameworkElement or FrameworkContentElement for target element. BindingExpression:Path=IsChecked; DataItem=null; target element is 'VM' (HashCode=52864749); target property is 'IWillChange' (type 'Boolean')
...
Рейтинг: 0 / 0
Как связать 2 DependencyProperty определенных в класса напрямую от DependencyObject?
    #37669439
Фотография уТКа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xpoft2010,

на ум приходит лишь одна мысль "ограниченность видимости ContentControl как у DataTemplate" сейчас проверить не смогу, другая ОС, завтра на работе, если получится.
...
Рейтинг: 0 / 0
Как связать 2 DependencyProperty определенных в класса напрямую от DependencyObject?
    #37669479
xpoft2010
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
уТКаxpoft2010,

на ум приходит лишь одна мысль "ограниченность видимости ContentControl как у DataTemplate" сейчас проверить не смогу, другая ОС, завтра на работе, если получится.

спасибо, проблема уже решена, действительно ругался из-за того, что не унаследован от FrameworkElement:
вот здесь об этом обсуждение:
http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/aff23943-5483-40b2-816b-4ce687bc6bf8/

решение оказалось предельно простым и приемлемым:
вот здесь в конце 3 варианта решения этой проблемы, может кому то будет полезным:
http://eladm.wordpress.com/2009/04/08/databinding-tips-tricks/

Я унаследовался от Freezable.
...
Рейтинг: 0 / 0
Как связать 2 DependencyProperty определенных в класса напрямую от DependencyObject?
    #37669815
Фотография уТКа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xpoft2010,

все куда проще
...
Рейтинг: 0 / 0
Как связать 2 DependencyProperty определенных в класса напрямую от DependencyObject?
    #37669952
xpoft2010
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, будет работать в некоторых сценариях, в частности в этом пробном проекте(куда ж денется то! ) ), но в рабочем проекте мне на мои <local:VM и EditVM>(понятное дело, что там они более внятно), нужно вешать визуализацию через DataTemplate при таком подходе придется делать некоторые выкрутасы, чтобы это реализовать. На мой взгляд будет делать разметку менее читаемой.
Спасибо за помощь!
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Как связать 2 DependencyProperty определенных в класса напрямую от DependencyObject?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]