Модераторы: gambit, Kefir, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> UserControl в CustomControl-e DataTemplate-a, Не работает binding 
:(
    Опции темы
shmarov
Дата 30.11.2010, 12:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 70
Регистрация: 15.6.2007
Где: 1001101 region

Репутация: нет
Всего: 1



Добрый день. Помогите разобраться с проблемой.
Я сделал несколько разных элементов:
1) MyComboBox - наследник стандартного ComboBox,
2) MyConboBoxUC - наследник UserControl с размещенным внутри ComboBox + EnumState для хранения состояния MyConboBoxUC,
3) SwitchButton - наследник UserControl, кнопка с двумя enum-состояниями On/Off.

При использовании всех этих элементов в верстке окна всё замечательно работает
Попытался их использовать в DataTemplate и столкнулся со непонятной мне штукой:
в элементах, наследованных от UserControl, не работают привязки. Не удается задать ItemsSource, SelectedItem и EnumState для MyConboBoxUC, и состояние кнопки SwitchButton. В режиме отладки значения элементам присваиваются (меняется состояние SwitchButton и изображение соответствующее состоянию), значит судя по всему как-то неправильно описываю привязку элементов. Подскажите, в чем может быть дело? 

Или может подскажете, как сделать SwitchButton наследованный от Control? Не могу сообразить, можно ли привязать обработчик события при таком описании элемента.

Спасибо.

P.S. Есть коллекция элементов для отображения в TabControl, затык с управлением порядком сортировки датагридов этих элементов
часть xaml-кода:
Код

<DataTemplate x:Key="TabContentLevel1">
    <ContentControl DataContext="{Binding .}" Style="{DynamicResource TabContentLevel1Style}" />
</DataTemplate>

<Style x:Key="TabContentLevel1Style" TargetType="{x:Type ContentControl}">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate>
                <DockPanel DataContext="{Binding Children}">
                    <ss:MyBoxCommand 
                        DisplayMemberPath="Display" 
                        SelectedValuePath="Field" 
                        ItemsSource="{Binding SortFieldList}" 
                        SelectedItem="{Binding CurrentSort, Mode=TwoWay}" 
                        Command="{Binding CommandSort}" 
                        CommandParameter="{Binding Self}" />
                    <ss:SwitchButton 
                        ImageAsc="..\Image\Reset.png" 
                        TextAsc="Ascending" 
                        ImageDesc="..\Image\New.png" 
                        TextDesc="Descending" 
                        SortDirection="{Binding SortDirection Mode=TwoWay}" 
                        Command="{Binding CommandSort}" 
                        CommandParameter="{Binding Self}" />

                <!-- ... -->

                </DockPanel>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>


Это сообщение отредактировал(а) shmarov - 30.11.2010, 12:40
PM MAIL   Вверх
SergeyLoginov
Дата 30.11.2010, 17:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 28.9.2009
Где: Иваново

Репутация: 4
Всего: 4



При описании шаблона внутри ControlTemplate для задания привязок необходимо использовать TemplateBinding вместо Binding. Либо конструкцию {Binding RelativeSource={RelativeSource TemplatedParent}, Path=...}. 
PM MAIL   Вверх
SergeyLoginov
Дата 30.11.2010, 18:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 28.9.2009
Где: Иваново

Репутация: 4
Всего: 4



Надо сказать, что в Вашем коде замена Binding на TemplateBinding мало что исправит. Сомневаюсь, что код откомпилируется. Почитайте вот это, может прояснится что. 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | WPF и Silverlight | Следующая тема »


 




[ Время генерации скрипта: 0.0779 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.