我正在尝试使用可变数量的按钮创建一个Wpf UserControl
在public string[] MenuItems { get; set; }
后面的代码中包含按钮的Text(内容),因此数组中的每个项目都应对应一个按钮。
我试过了:
<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 intellisense中被识别,有时不被识别。 窗口有自己作为datacontext:
DataContext="{Binding RelativeSource={RelativeSource Self}}"
答案 0 :(得分:1)
您的MenuItems
属性应为DependancyProperty
,以便将其用作绑定目标。
类型应该是string []而不是字符串。
static readonly DependencyProperty MenuItemsProperty = DependencyProperty.Register("MenuItems", typeof(string[]), typeof(MenuButtons), new PropertyMetadata(null));