I am trying to create a ContextMenu
that defines some filters via Checkable MenuItem
s, with a Separator
separating the last MenuItem
from the previous ones.
I know I could define and manage the MenuItem
s and the Separator
in the following way:
<ContextMenu HasDropShadow="False" Placement="Bottom">
<MenuItem IsCheckable="True" IsChecked="{Binding Path=IsChecked1}" Header="Filter 1"/>
<MenuItem IsCheckable="True" IsChecked="{Binding Path=IsChecked2}" Header="Filter 2"/>
<MenuItem IsCheckable="True" IsChecked="{Binding Path=IsChecked3}" Header="Filter 3"/>
<MenuItem IsCheckable="True" IsChecked="{Binding Path=IsChecked4}" Header="Filter 4"/>
<MenuItem IsCheckable="True" IsChecked="{Binding Path=IsChecked5}" Header="Filter 5"/>
<MenuItem IsCheckable="True" IsChecked="{Binding Path=IsChecked6}" Header="Filter 6"/>
<MenuItem IsCheckable="True" IsChecked="{Binding Path=IsChecked7}" Header="Filter 7"/>
<MenuItem IsCheckable="True" IsChecked="{Binding Path=IsChecked8}" Header="Filter 8"/>
<Separator Styles.Separator="Default"/>
<MenuItem IsCheckable="True" IsChecked="{Binding Path=IsChecked9}" Header="Active"/>
</ContextMenu>
But I would rather try to avoid having 9 IsChecked
properties in my ViewModel, on top of having the next dev need to add/remove a MenuItem
and its associated property when we need to add/remove a filter.
What I'd rather do, is to use the ItemsSource
property of the ContextMenu
and define an ItemTemplate
for each element of the ItemsSource
. Unfortunately, if I do this, I am not sure how I can define the Separator
before the last element of the ItemsSource
like I could do in the previous code snippet.
Is there a way to achieve what I want to do without defining manually each individual MenuItem
and its associated properties in the ViewModel?