none
Получить данные о выбранных элементах DataGrid Silverlight RRS feed

  • Вопрос

  • Как можно в Silverlight получить данные, о каждом объекте из SelectedItems? Пробую через преобразование из object, но там данные о элементе хранятся в приватном свойстве SelectedItemsCache, но доступа к нему получить не могу..
    25 июня 2013 г. 12:13

Ответы

  • Добрый день.

    Не очень понятен вопрос. Давайте приведу пример, может это то, что вам нужно. Если нет, то доуточните, что конкретно у вас не получается.

    Итак, пример. Пусть есть класс:

    public class Person
    {
        public string FirstName { get; set; }
    
        public string LastName { get; set; }
    }

    Вот разметка страницы:

    <Grid x:Name="LayoutRoot" Background="White">
        <Grid.RowDefinitions>
            <RowDefinition Height="auto" />
            <RowDefinition />
        </Grid.RowDefinitions>
        <Button Content="Что там выбрано?" Click="Button_Click" />
        <sdk:DataGrid Grid.Row="1" x:Name="dgMain" />
    </Grid>

    Вот код, который присваеват в качестве источника данных коллекцию из трех элементов, а при клике на кнопке выводит фамилии выбранных в списке персон:

    public partial class MainPage : UserControl
    {
        public MainPage()
        {
            InitializeComponent();
            Loaded += MainPage_Loaded;
        }
    
        void MainPage_Loaded(object sender, RoutedEventArgs e)
        {
            List<Person> persons = new List<Person>();
            persons.Add(new Person { LastName = "Иванов", FirstName = "Иван" });
            persons.Add(new Person { LastName = "Петров", FirstName = "Петр" });
            persons.Add(new Person { LastName = "Сидоров", FirstName = "Сидор" });
            dgMain.ItemsSource = persons;
        }
    
        private void Button_Click(object sender, RoutedEventArgs e)
        {
            string result = "";
            foreach (var item in dgMain.SelectedItems.Cast<Person>())
            {
                result += item.LastName + ";\n";
            }
            MessageBox.Show(result);
        }
    }

    Запускаем, выбираем, кликаем на кнопке:

    • Помечено в качестве ответа Amfitorin 27 июня 2013 г. 8:47
    26 июня 2013 г. 5:36
    Отвечающий

Все ответы

  • Добрый день.

    Не очень понятен вопрос. Давайте приведу пример, может это то, что вам нужно. Если нет, то доуточните, что конкретно у вас не получается.

    Итак, пример. Пусть есть класс:

    public class Person
    {
        public string FirstName { get; set; }
    
        public string LastName { get; set; }
    }

    Вот разметка страницы:

    <Grid x:Name="LayoutRoot" Background="White">
        <Grid.RowDefinitions>
            <RowDefinition Height="auto" />
            <RowDefinition />
        </Grid.RowDefinitions>
        <Button Content="Что там выбрано?" Click="Button_Click" />
        <sdk:DataGrid Grid.Row="1" x:Name="dgMain" />
    </Grid>

    Вот код, который присваеват в качестве источника данных коллекцию из трех элементов, а при клике на кнопке выводит фамилии выбранных в списке персон:

    public partial class MainPage : UserControl
    {
        public MainPage()
        {
            InitializeComponent();
            Loaded += MainPage_Loaded;
        }
    
        void MainPage_Loaded(object sender, RoutedEventArgs e)
        {
            List<Person> persons = new List<Person>();
            persons.Add(new Person { LastName = "Иванов", FirstName = "Иван" });
            persons.Add(new Person { LastName = "Петров", FirstName = "Петр" });
            persons.Add(new Person { LastName = "Сидоров", FirstName = "Сидор" });
            dgMain.ItemsSource = persons;
        }
    
        private void Button_Click(object sender, RoutedEventArgs e)
        {
            string result = "";
            foreach (var item in dgMain.SelectedItems.Cast<Person>())
            {
                result += item.LastName + ";\n";
            }
            MessageBox.Show(result);
        }
    }

    Запускаем, выбираем, кликаем на кнопке:

    • Помечено в качестве ответа Amfitorin 27 июня 2013 г. 8:47
    26 июня 2013 г. 5:36
    Отвечающий
  • ДА, это то, что нужно) Я забыл про оператор Cast<>))

    27 июня 2013 г. 8:47