这可以通过数据绑定来完成,但最好使用属性接口,以便您可以简单地键入以下内容:
<local:OptionControl Text="Status wijzigen" ImageSource="/UserControlSolution;component/Image/user.png" />
这样您就不需要将 UI 标签和图标放在单独的数据层中。
这可以通过创建一个定义Dependency Properties的控件类并使用TemplateBindings在 ControlTemplate 中绑定到它们来实现。
现有控件可能具有您可以为其创建模板的适当属性。这个HeaderedContentControl模板应该适合您,尽管自定义控件会更好:
<Style x:Key="HeaderedContentControlStyle" TargetType="HeaderedContentControl">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="HeaderedContentControl">
<Grid Style="{StaticResource MenuItemGridStyle}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="30" />
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Style="{StaticResource MenuItemTextblockStyle}" Text="{TemplateBinding Header}" />
<Image Grid.Column="1" Source="{TemplateBinding Content}" />
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
用法:
<HeaderedContentControl Name="OptionChangeUserState" Grid.Row="0"
Style="{StaticResource HeaderedContentControlStyle}"
Header="Status wijzigen">
<BitmapImage>/UserControlSolution;component/Image/user.png</BitmapImage>
</HeaderedContentControl>
请注意,我们需要BitmapImage
明确地包装图像路径。这是因为该HeaderedContentControl.Content
属性未声明为图像类型,因此 WPF 不会自动对其进行转换。