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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ContextMenu в WPF, не могу заюзать. 
V
    Опции темы
Bladerender
Дата 8.8.2010, 22:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Не могу заюзать контекстное меню. wpf. Вызвать то вызвал а отследить нажатие на итеме и потом узнать, какой итем был нажат - не могу.
В винФормс это делалось подпиской на Click меню и потом по проперти SelectedItem узнавал, что было нажато. Тут нету ни одного ни другого. Пробовал OnMouseDown или Up - так не срабатывает этот ивент при выборе чего-то в контектМеню. Смешно конечно, но уже второй день пытаюсь заюзать, не могу найти то что нада, забиваю на этот таск и делаю другой. А этот то стоит. Заранее спасибо. Понимаю, что смешно звучит. Нагуглить кстати тоже не могу. Куча тем по вызову контекстного меню и практически нет по работе с ним после вызова. 

Это сообщение отредактировал(а) Bladerender - 8.8.2010, 22:42
PM MAIL   Вверх
Kefir
Дата 8.8.2010, 23:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


«Hakuna Matata»
***


Профиль
Группа: Комодератор
Сообщений: 1878
Регистрация: 25.1.2003
Где: Tampere, Suomi

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



Собственно, код, который должен прекрасным образом работать:
Код

<Button Content="MyButton">
  <Button.ContextMenu>
    <ContextMenu>
      <MenuItem Header="Do something" Click="MenuItem_Click"/>
    </ContextMenu>
  </Button.ContextMenu>
</Button>


Можно так же привязать к команде. Если этот код не работает - ищите проблему где-нибудь в другом месте, что может блокировать обработку эвента. Если хочется один эвент - просто можно подписать все MenuItem-ы на один и тот же обработчик и по sender определять отправителя.
PM MAIL WWW Skype   Вверх
Bladerender
Дата 8.8.2010, 23:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Так работает. Но это же блин капец. Каждый итем, даже если автоматически это сделать, подписывать на один и тот же метод.
PM MAIL   Вверх
Kefir
Дата 9.8.2010, 00:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


«Hakuna Matata»
***


Профиль
Группа: Комодератор
Сообщений: 1878
Регистрация: 25.1.2003
Где: Tampere, Suomi

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



Если нужна глобальность, то можно задать обработчик определённого эвента в стиле контейнера. Выглядеть это будет так:
Код

<ContextMenu>
    <ContextMenu.ItemContainerStyle>
        <Style TargetType="{x:Type MenuItem}">
            <EventSetter Event="Click" Handler="MenuItem_Click"/>
        </Style>
    </ContextMenu.ItemContainerStyle>
    <MenuItem Header="Item 1"/>
    <MenuItem Header="Item 2"/>
</ContextMenu>


Тогда всем пунктам меню будет обозначен обработчик события Click - MenuItem_Click. Ну и по sender уже будешь определять кто конкретно был нажат.
PM MAIL WWW Skype   Вверх
Bladerender
Дата 9.8.2010, 15:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Я не создаю меню в XAML. 

У меня код что-то типа такого 

Код

ContextMenu menu = new ContextMenu();

....
 menu.Items.Add(new MenuItem("bla bla bla",item_Click));



void item_Click(object sender, EventArgs e)
{
}



не срабатывает на клик + к тому еще и bla bla bla не пишет на визуальном пункте меню. 
PM MAIL   Вверх
Kefir
Дата 9.8.2010, 15:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


«Hakuna Matata»
***


Профиль
Группа: Комодератор
Сообщений: 1878
Регистрация: 25.1.2003
Где: Tampere, Suomi

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



Я чесслово, не вижу такого конструктора у MenuItem. Вы о чем?
PM MAIL WWW Skype   Вверх
Bladerender
Дата 9.8.2010, 18:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



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


 




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


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

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