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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Двойной клик по заголовку таблицы 
:(
    Опции темы
shtuceron
Дата 9.2.2012, 11:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Здравствуйте, 

Как можно понять, что при двойном клике по таблице мы кликнули по заголовку а не по ячейке?
PM MAIL WWW   Вверх
RastaDja
Дата 9.2.2012, 14:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Код

private void dataGrid_Data_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
   DataGrid g = sender as DataGrid;
   String type = e.Device.Target.GetType().ToString();
   //  можно приравнивать не строки, а типы, что будет бустрее, но мне кажется идея ясна
   if (type.Equals("System.Windows.Controls.Primitives.DataGridColumnHeader"))
   {
      MessageBox.Show("Table header");
   }
}



--------------------
The more closely you look at one thing, the less closely can you see something else.
PM MAIL   Вверх
shtuceron
Дата 9.2.2012, 16:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Спасибо, я такие грабли придумывал, вот мой код

Код

switch (dependencyObject.DependencyObjectType.Name)
{
    case "DataGridHeaderBorder":
        break;
    case "TextBlock":
        switch (((System.Windows.Controls.TextBlock)dependencyObject).Text)
        {
            case "DatagridHeaderText":
                break;
            default:
                SomeFunction();
                break;
        }
        break;

    default:
        SomeFunction();
        break;
}


Однако, когда мы кликаем по разделителю колонок у нас тип становится равным
Код

System.Windows.Controls.Border


такой же тип возвращают некоторые колонки (DataGridComboBoxColumn), как обрабатывать такой случай? или как можно отключить двойной клик по разделителю заголовков?

Спасибо.
PM MAIL WWW   Вверх
RastaDja
Дата 10.2.2012, 08:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Код

private void dataGrid_Data_MouseDoubleClick(object sender, MouseButtonEventArgs e)

     //  пытаетесь получить строку
     DataGridRow row = ItemsControl.ContainerFromElement((DataGrid)sender, e.OriginalSource as DependencyObject) as DataGridRow;
     //  Если строку получить не удалось
     if (null == row){
             //  Используешь выше привиденный код, скорее всего это заголовок
     }else{
             //  это строка, работаешь как со строкой, получаешь ячейки
     }

}


Это сообщение отредактировал(а) RastaDja - 10.2.2012, 08:54


--------------------
The more closely you look at one thing, the less closely can you see something else.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | WPF и Silverlight | Следующая тема »


 




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


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

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