Это может быть сделано с привязкой данных, но было бы предпочтительнее использовать интерфейс свойств, так что вы можете просто ввести что-то вроде:
<local:OptionControl Text="Status wijzigen" ImageSource="/UserControlSolution;component/Image/user.png" />
Таким образом, вам не нужно иметь ярлыки и значки пользовательского интерфейса в отдельном слое данных.
Это может быть достигнуто путем создания класса управления, который определяет 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 не будет автоматически его преобразовывать.
+1 для вашего интересного использования свойства 'Tag'. – Sheridan
спасибо @Sheridan :) – Nitin