【发布时间】:2020-12-04 17:09:33
【问题描述】:
感谢@thatguy 的大力帮助,我能够动态创建菜单,所有详细信息和解释都在这里: How to avoid repeating blocks of XAML in a menu
它工作得很好,但我的问题是在列表的末尾我需要添加一个分隔符和一个删除项。 这是我使用的代码:
<ContextMenu ItemsSource="{Binding MyTypes}" ItemContainerStyle="{StaticResource MyMenuItemStyle}">
<Separator HorizontalAlignment="Stretch" Visibility="{Binding MenuSelected.Type, Converter={StaticResource STypeToVisibilityConverter}, ConverterParameter='ANY', Mode=OneWay}" />
<MenuItem>
<i:Interaction.Triggers>
<i:EventTrigger EventName="Click">
<i:InvokeCommandAction Command="{Binding CmdContextMenu}" CommandParameter="DEL" />
</i:EventTrigger>
</i:Interaction.Triggers>
<MenuItem.Header>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<TextBlock
Grid.Column="0"
HorizontalAlignment="Center"
VerticalAlignment="Center"
FontFamily="Segoe MDL2 Assets"
Text="" />
<TextBlock
Grid.Column="1"
Margin="{StaticResource XSmallLeftMargin}"
HorizontalAlignment="Left"
VerticalAlignment="Center"
Text="Delete" />
</Grid>
</MenuItem.Header>
</MenuItem>
</ContextMenu>
</TreeView.ContextMenu>
但是当我运行它时,我得到一个错误:
Message=Items 集合在使用 ItemsSource 之前必须为空。 Source=PresentationFramework
:(
我可以在列表中添加删除项
public IEnumerable<string> MyTypes { get; } = new List<string>
{
"PAZ",
"APP",
"DEL"
};
但是如何添加分隔符?
【问题讨论】:
标签: xaml optimization .net-core binding