我已经使用自定义用户控件创建了一个wpf usercontrol库,以便在不同的项目中使用它们。
我有一个带有默认图像的按钮,但我希望能够根据需要更改按钮的图像:
public static readonly DependencyProperty BTN_SEARCH_IMAGE =
DependencyProperty.Register("ButtonImage", typeof (string), typeof (Searchbar));
我的物业包装:
public string ButtonImage
{
get
{
var strToCheck = GetValue(BTN_SEARCH_IMAGE) as string;
return String.IsNullOrWhiteSpace(strToCheck)
? @"WPF_Controls;Component/Images/Search.png"
: strToCheck;
}
set { SetValue(BTN_SEARCH_IMAGE, value); }
}
在XAML中:
<UserControl x:Class="WPF_Controls.Searchbar"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Name="SearchBar">
<DockPanel DataContext="{Binding ElementName=SearchBar}">
<Button Name="btnSearch"
DockPanel.Dock="Left"
Command="{Binding Path=SearchCommand}">
<Image Source="{Binding Path=ButtonImage}" />
</Button>
</DockPanel>
</UserControl>
如果用户没有将任何内容绑定到ButtonImage,则默认图像应显示用户的选择。
答案 0 :(得分:1)
您应该可以使用Style
执行此操作。如果您将该样式定义为整个应用程序可访问的某个地方(例如App.xaml),它将自动应用于所有SearchBar
。
<Style TargetType="l:SearchBar">
<Setter Property="ButtonImage" Value="TheImage" />
</Style>
Setter 的值可以绑定到StaticResource
,或者您定义了图像。通常,您可以在ResourceDictionary
中执行此操作,您可以在其中将默认图像定义为StaticResource
。
如果在图像上本地设置了ButtonImage
,它将覆盖样式设置的值。请参阅Dependency Property Value Precedence以获取参考。