我正在尝试使用可变数量的按钮创建一个 Wpf UserControl。
在后面的代码中public string[] MenuItems { get; set; }
包含了按钮的文本(Content),所以数组中的每一项都应该对应一个按钮。
我试过了:
<UserControl x:Class="MyApp.Controls.MenuButtons"
xmlns:m="clr-namespace:MyApp.Controls"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
DataContext="{Binding RelativeSource={RelativeSource Self}}">
<DockPanel LastChildFill="False"
Background="{StaticResource ControlBackground}"
DockPanel.Dock="Top"
Height="35"
Margin="5,0,0,0">
<ItemsControl ItemsSource="{Binding MenuItems}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Button Content="{Binding}"
Style="{StaticResource MenuButton}" />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</DockPanel>
</UserControl>
在这样的窗口中使用控件:
<c:MenuButtons MenuItems="..."></c:MenuButtons>
给出错误:成员“MenuItems”无法识别或不可访问。
MenuItems 有时会在 xaml 智能感知中被识别,有时则不会。该窗口将自身作为数据上下文:
DataContext="{Binding RelativeSource={RelativeSource Self}}"