2013-12-23 2 views
2

Я новичок в WPF и пытаюсь привязать контекстное меню к кнопке с элементами контекстного меню, которые появляются из модели просмотра.WPF Button с контекстным меню

Это то, что я делаю:

<Button x:Name="btn" Content="Context Menu"> 
    <Button.ContextMenu> 
    <ContextMenu x:Name="cm" ItemsSource="ItemsList"/> 
    </Button.ContextMenu> 
</Button> 

private List<string> itemsList = null; 
public List<string> ItemsList 
{ 
    get 
    { 
    if(itemsList == null) 
     itemsList = new List<string>(myStringArrayOfItems); 
    return itemsList;     
    } 
} 

Часть XAML редактор продолжает показывать ошибку: TypeConverter для «IEnumerable» не поддерживает преобразование из строки.

Что я здесь делаю неправильно?

Кроме того, если я получу эту работу, что мне делать, чтобы связать эти элементы с командой и выполнить некоторую работу при нажатии элемента? Я хочу запустить ту же команду для всех пунктов меню, просто используя строку элемента в качестве параметра.

+0

Любые идеи по этому поводу? – Padmaja

ответ

6

Если вы делаете ItemsSource="ItemsList", вы не привязываетесь к ItemsList, но устанавливаете его на строку ItemsList, следовательно, ваша ошибка. Попробуйте привязывая его так:

<ContextMenu x:Name="cm" ItemsSource="{Binding Path=ItemsList}"/> 

, как для Command части вам понадобится реализация ICommand интерфейса (например, here), а затем вам привязать его как в ItemContainerStyle:

<ContextMenu ...> 
    <ContextMenu.ItemContainerStyle> 
     <Style TargetType="{x:Type MenuItem}"> 
     <Setter Property="Command" Value="{Binding RelativeSource={RelativeSource AncestorType={x:Type ContextMenu}}, Path=PlacemantTarget.DataContext.ItemChanged }"/> 
     <Setter Property="CommandParameter" Value="{Binding}"/> 
     </Style> 
    </ContextMenu.ItemContainerStyle> 
</ContextMenu > 
+0

Спасибо dkozl. Я могу получить данные сейчас. Но по какой-то причине XAML продолжает говорить, что «Command» не является свойством, которое я могу установить. Наверное, я делаю что-то глупое, но не знаю, что. – Padmaja

+0

try '