Вы можете использовать свойство Tag
<CheckBox Tag="YourImageSource"
Style="{DynamicResource ImageCheckbox}"/>
, а затем связать Источник Image
в Template
с Tag
<Image x:Name="image" Width="20" Height="20" Stretch="UniformToFill"
Source="{Binding RelativeSource={RelativeSource TemplatedParent},
Path=Tag}"/>
Однако яЯ бы предпочел использовать Attached Property по ряду причин.
- Цель использования
Tag
не совсем ясна - Возможно, вы используете свойство
Tag
длячто-то еще - Возможно, вы захотите использовать более одного ImageSource и т. д.
Использование присоединенного свойства точно такое же, за исключением того, что вы должны заключить в скобки круглое свойство.*
<CheckBox local:ImageSourceExtension.ImageSource="YourImageSource"
Style="{DynamicResource ImageCheckbox}"/>
В шаблоне
<Image x:Name="image" Width="20" Height="20" Stretch="UniformToFill"
Source="{Binding RelativeSource={RelativeSource TemplatedParent},
Path=(local:ImageSourceExtension.ImageSource)}"/>
А вот и прикрепленное свойство ImageSource
public class ImageSourceExtension
{
public static DependencyProperty ImageSourceProperty =
DependencyProperty.RegisterAttached("ImageSource",
typeof(ImageSource),
typeof(ImageSourceExtension),
new PropertyMetadata(null));
public static ImageSource GetImageSource(DependencyObject target)
{
return (ImageSource)target.GetValue(ImageSourceProperty);
}
public static void SetImageSource(DependencyObject target, ImageSource value)
{
target.SetValue(ImageSourceProperty, value);
}
}