我正在设计一个UserControl
,其中引用了ResourceDictionary
。 UserControl
有一个<ItemsControl>
,其中的ItemTemplate
在ResourceDictionary
中定义。
简而言之,此<ItemsControl.ItemsSource>
接受字符串的集合,并且DataTemplate
为每个字符串分配一个<Button>
。这是一个以字符串集合为源的动态按钮集合。
UserControl
的{{1}}声明:
ItemsControl
<ItemsControl Name="PanelMain" Grid.Column="0" Grid.ColumnSpan="3" Grid.Row="1"
ItemsSource="{Binding Path=MenuMain}"
ItemTemplate="{StaticResource MenuItemTemplate}">
</ItemsControl>
模板:
ResourceDictionary
现在,我需要将每个按钮的点击挂到命令上。由于这些按钮是在<DataTemplate x:Key="MenuItemTemplate" DataType="ItemsControl">
<Button Style="{StaticResource MenuItemStyle}" Content="{Binding}" >
</Button>
</DataTemplate>
<Style x:Key="MenuItemStyle" TargetType="Button">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Border Background="{TemplateBinding Background}" BorderThickness="0" Height="30">
<ContentControl Foreground="{TemplateBinding Foreground}" VerticalAlignment="Center">
<ContentControl.Content>
<TemplateBinding Property="Content"/>
</ContentControl.Content>
</ContentControl>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
中定义的,因此我不确定如何绑定其命令。一些答案指出了为ResourceDictionary
创建代码隐藏文件(.xaml.cs),但是我想知道是否有可能使用键将命令公开为资源,因此其ResourceDictionary
可以将其绑定而不是字典吗?
旁注:UserControl
必须将其单击的按钮标题显示为字符串