Wiążę ItemsSource z mojego MenuItem do ObservableCollection w moim ViewModel. Tu jest mój XAML:Jak dynamicznie powiązać i statycznie dodać MenuItems?
<MenuItem Header="_View"
ItemsSource="{Binding Windows}">
<MenuItem.ItemContainerStyle>
<Style>
<Setter Property="MenuItem.Header"
Value="{Binding Title}" />
</Style>
</MenuItem.ItemContainerStyle>
</MenuItem>
Ta część działa świetnie, ale teraz chcę też dodać kilka statycznych elementów menu do samego widoku MenuItem, oddzielonych separatorem. Coś w tym stylu, chociaż wiem, że to nie zadziała, ponieważ nie mogę ustawić przedmiotów dwukrotnie.
<MenuItem Header="_View"
ItemsSource="{Binding Windows}">
<MenuItem.ItemContainerStyle>
<Style>
<Setter Property="MenuItem.Header"
Value="{Binding Title}" />
</Style>
</MenuItem.ItemContainerStyle>
<Separator />
<MenuItem Header="item 1" />
<MenuItem Header="item 2" />
</MenuItem>
Na razie stworzyliśmy obejść dodając kolejny poziom do MenuItem takiego:
<MenuItem Header="_View">
<MenuItem Header="Windows"
ItemsSource="{Binding Windows}">
<MenuItem.ItemContainerStyle>
<Style>
<Setter Property="MenuItem.Header"
Value="{Binding Title}" />
</Style>
</MenuItem.ItemContainerStyle>
</MenuItem>
<MenuItem Header="Load Layout" />
<MenuItem Header="Save Layout" />
</MenuItem>
Działa to dobrze, ale raczej nie chciałbym mieć podmenu jeśli to w ogóle możliwe . Aha, i wolałbym to zrobić w Xaml zamiast kodu z tyłu. Jakieś pomysły?
Być może używać CompositeCollection do "ujednolicenia" Państwa zbierania z maszyny wirtualnej przy użyciu zdefiniowanej kolekcji XAML. –