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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Data Binding проблема с DataGrid 
V
    Опции темы
belousov
Дата 14.1.2010, 17:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Всем доброго дня. Подскажите, только начинаю ковыряться с WPF.

Выполняю простенький запрос 
Код

 datadiskEntities db = new datadiskEntities();
        public MainWindow()
        {
            InitializeComponent();
            var query = db.disk_number.Select(q => new { key = q.key_num, num = q.number });
            mygrid.DataContext = query;
        }

в результате получается поле key - код строки, num - номер. Запрос работает.
Далее пытаюсь привязать это дело к DataGrid или ListBox не суть важно
 
Код

<Window x:Class="disks.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="Главное окошко" Height="350" Width="525" Name="main_w" WindowStartupLocation="CenterScreen">
    <Grid x:Name="mygrid">
        <DataGrid ItemsSource="{Binding}" AutoGenerateColumns="True" Height="287" HorizontalAlignment="Left" Margin="12,12,0,0" Name="grid_nums" VerticalAlignment="Top" Width="165" IsSynchronizedWithCurrentItem="True" />
        <ListBox ItemsSource="{Binding}" Height="234" HorizontalAlignment="Left" Margin="191,12,0,0" Name="listBox1" VerticalAlignment="Top" Width="151" IsSynchronizedWithCurrentItem="True" />
    </Grid>
</Window>


Если оставить параметр ItemSource как есть, то он выведет оба поля. а мне хотелось бы вывести только поле num. 
Как это сделать. подскажите пожалста!


--------------------
NIHIL VERUM EST LICET OMNIA 
PM MAIL WWW ICQ Skype   Вверх
tol05
Дата 14.1.2010, 18:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Используйте свойство Binding.Path
Код

        <DataGrid ItemsSource="{Binding Path=num}" ...



--------------------
На хорошей работе и сны хорошие снятся.
PM MAIL   Вверх
belousov
Дата 14.1.2010, 19:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



tol05, пробовал не помогает. может не так сделал чтото


--------------------
NIHIL VERUM EST LICET OMNIA 
PM MAIL WWW ICQ Skype   Вверх
belousov
Дата 14.1.2010, 22:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Вопросик решился. Спасибо за участие


--------------------
NIHIL VERUM EST LICET OMNIA 
PM MAIL WWW ICQ Skype   Вверх
tol05
Дата 14.1.2010, 23:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



я ошибся. Вот так должно сработать
Код

<Grid x:Name="mygrid">        
        <ListBox ItemsSource="{Binding}" Height="234" HorizontalAlignment="Left" 
                 Margin="191,12,0,0" Name="listBox1" VerticalAlignment="Top" Width="151">
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <TextBlock Text="{Binding Path=num}"/>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>
    </Grid>

Код

public partial class Window1 : Window
    {
        public Window1()
        {
            InitializeComponent();

            Numbers[] disk_numbers = CreateDisk_numbers();
        
            var query = disk_numbers.Select(q => new { key = q.key_num, num = q.number });
            mygrid.DataContext = query;

            
        }

        private Numbers[] CreateDisk_numbers()
        {
            Numbers[]  result = new Numbers[10];

            for (int i = 0; i < 10; i++)
            {
                result[i] = new Numbers() {key_num = i, number = i * 10};
            }

            return result;
        }
    }

    public class Numbers
    {
        public int key_num { get; set; }
        public int number { get; set; }
    }



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


 




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


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

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