2014-05-23 3 views
3

Я хочу создать всплывающее меню с использованием C#. Я пробовал этоСоздать всплывающее меню с использованием C#

List<string> l = new List<string>(); 
l.Add("Rotate"); 
l.Add("Scale"); 
l.Add("Bring to Front"); 
l.Add("Send to Back"); 
MenuFlyout m = new MenuFlyout(); 
MenuFlyoutItem mn = l; 
m.Items.Add(mn); 

Это дает ошибку, как это сделать?

+0

'MenuFlyoutItem тп = л;' является виновной линией. У меня нет Windows 8.1, поэтому я не могу доказать «правильный» код, но похоже, что вы должны добавлять несколько «MenuFlyoutItem» к вашему «MenuFlyout», по одному для каждого элемента в вашем списке. – ClickRick

+0

Вы можете предоставить небольшой код? – user3090763

+0

Я мог догадаться, но поскольку я не могу ее скомпилировать, я не мог быть уверен, что это сработает. Ваш пример в вашем ответе ниже - это то, что я мог себе представить, но, не будучи в состоянии доказать это, я не хотел предлагать его в качестве ответа. – ClickRick

ответ

8

Этот код работает:

MenuFlyout m = new MenuFlyout(); 
MenuFlyoutItem mn = new MenuFlyoutItem(); 
mn.Text = "Item 1"; 
m.Items.Add(mn); 
m.ShowAt((FrameworkElement)sender); 
+0

Я предполагаю, что использование 'sender' подразумевает, что этот код находится в обработчике событий. В этом случае вам следует выполнить проверку типа «отправителя», прежде чем полагаться на него, например. добавить элемент FrameworkElement = отправитель в качестве элемента FrameworkElement; if (element! = null) {... 'перед блоком. – ClickRick

+0

да, вы правы, спасибо за указание. – user3090763

Смежные вопросы