Как я могу получить пункт меню из меню с источником данных в WPF - PullRequest
0 голосов
/ 30 ноября 2018

У меня есть меню с XML, как это:

<MenuItem x:Name="MenuItemCameras" Header="Cameras" ItemsSource="{Binding LocalCameras}" >
<MenuItem.ItemTemplate>
 <DataTemplate>
<MenuItem Header="{Binding DisplayName}" IsCheckable="True" IsChecked="{Binding IsStreamingVideo}" IsEnabled="{Binding CanStreamVideo}" 
                    Command="{Binding DataContext.CommandSelectLocalCamera, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}}"
                    Click="MenuItemCameras_OnClick"/>
</DataTemplate>
</MenuItem.ItemTemplate>
</MenuItem>

Я хочу повторить, как это:

foreach (MenuItem mMenuItem in MenuItemCameras) {
   //some code
}

Как я могу это сделать?

1 Ответ

0 голосов
/ 30 ноября 2018

Чтобы получить соответствующий MenuItem, вы можете сделать это

foreach (var item in MenuItemCameras.Items) {
    MenuItem menuItem = (MenuItem)MenuItemCameras.ItemContainerGenerator.ContainerFromItem(item);
    //some code
}

Но есть и обратная сторона, пока соответствующий MenuItem не создан ItemContainerGenerator.ContainerFromItem вернет null

...