如何在wpf usercontrol库中定义默认图像

时间:2016-01-29 18:07:57

标签: c# wpf user-controls

我已经使用自定义用户控件创建了一个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,则默认图像应显示用户的选择。

1 个答案:

答案 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以获取参考。