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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Не работает биндинг, Связка DataSet и ComboBox 
V
    Опции темы
Dgedit
Дата 8.1.2010, 14:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 14.11.2006

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



Ребята помогите пожалуйста. Пытаюсь связать ComboBox с DataSet совсем запутался. Есть комбобокс и есть датасет, в датасете есть таблица Predmet надо заставить комбобок отображать колонку этой таблицы vcName. Во-первых проблема с привязкой таблицы к comboBox. Пишу так:
Код

<ComboBox Height="23" Margin="130,100,28,0" Name="changeGroupCombo" VerticalAlignment="Top"
                  ItemsSource="{Binding Source={g:data}}">

тут проблема в том, что не пойму как тогда задать DataTemplate. Ведь чтобы получить доступ к таблице надо написать так
Код

<ComboBox Height="23" Margin="130,100,28,0" Name="changeGroupCombo" VerticalAlignment="Top"
                  ItemsSource="{Binding Source={g:data}}">
            <DataTemplate>
                <TextBox Text="{Binding Path=Tables[1].vcNamePredmet}"/>                
            </DataTemplate>            
        </ComboBox>

Но тут надо задать в квадратных скобках имя или индекс таблицы - а хамл ругается на это.
Вроде попытался вырутиться так: вместо привязки в хамл пытаюсь привязать в С# коде:
Код

changeGroupCombo.DataContext = ds.Tables["Predmet"];

Но тут вторая проблема как задать шаблон элемента, если пишу так
Код

<DataTemplate>
                <TextBox Text="{Binding Path=vcNamePredmet}"/>                
</DataTemplate>      

В комбобоксе выводятся строки "System.Windows.DataTemplate".
Помогите их связать, а то уже голову сломал.
PM MAIL   Вверх
Dgedit
Дата 8.1.2010, 18:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 14.11.2006

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



В общем с помощью молотка и какой-то матери заставил я работать эту схему:
Значит в коде надо привязать так:
Код

changeGroupCombo.DataContext = data;

changeGroupCombo - экземпляр ComboBox, data - это DataSet.
Далее в хамл:
Код

<Window.Resources>
        <DataTemplate x:Key="tableTemplate">
            <TextBlock Text="{Binding vcNamePredmet}" />
        </DataTemplate>
</Window.Resources>
<ComboBox Height="23" Margin="130,100,28,0" Name="changeGroupCombo" VerticalAlignment="Top" 
                ItemsSource="{Binding Tables[2]}" ItemTemplate="{StaticResource tableTemplate}">
</ComboBox>

И будет работать. Но ЧТО МЕНЯ УБИЛО, если вот так хамл написать не меняя C# код
Код

<ComboBox Height="23" Margin="130,100,28,0" Name="changeGroupCombo" VerticalAlignment="Top" 
                ItemsSource="{Binding Tables[2]}">
            <DataTemplate >
                <TextBlock Text="{Binding vcNamePredmet}" />
            </DataTemplate>
        </ComboBox>

то получим такую ошибку "Items collection must be empty before using ItemsSource." Хотя я не вижу различий в коде.



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


 




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


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

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