Я работаю над принципом обучения на практике и создаю автономный пользовательский элемент управления в wpf, который затем можно использовать в будущих проектах.
У меня есть несколько кнопок в этом элементе управления, каждая из которых имеет свойство изображения, определенное как свойство зависимости, позволяющее конечному пользователю использовать любое изображение, которое он предпочитает.
В xaml кнопка определяется так:
<Button Background="#00000000" x:Name="First" Height="Auto" Width="Auto" ToolTip="Go to First Record.">
<StackPanel Margin="2" Orientation="Horizontal">
<Image Source="{Binding ImageFirst, ElementName=DN}"
Width="{Binding ImageFirstWidth, ElementName=DN}"
Height="{Binding ImageFirstHeight, ElementName=DN}"/>
<TextBlock Margin="3" Text="{Binding TextFirst,ElementName=DN}"/>
</StackPanel>
</Button>
и соответствующее свойство зависимости изображения определяется следующим образом:
Public Property ImageFirst() As ImageSource
Get
Return DirectCast(GetValue(ImageFirstProperty), ImageSource)
End Get
Set(value As ImageSource)
SetValue(ImageFirstProperty, value)
End Set
End Property
Public Shared ReadOnly ImageFirstProperty As DependencyProperty = DependencyProperty.Register("ImageFirst", GetType(ImageSource), GetType(DataNavigator), New UIPropertyMetadata(Nothing))
Это работает точно так, как задумано, давая конечному пользователю возможность выбрать любое изображение, которое он выберет для кнопки.
Что я хотел бы сделать сейчас, так это добавить набор изображений по умолчанию для бутонов. Я создал папку в проекте (образно названную «Изображения»), в которую я добавил набор изображений, которые будут использоваться по умолчанию. Прав ли я, думая, что если я изменю часть UIPropertyMetadata объявления свойства зависимостей с нуля на ссылку на одно из этих изображений, это изображение будет использоваться по умолчанию, но все же позволит конечному пользователю выбрать другое, если они того пожелают.
Если это так, как мне определить часть UIPropertMetadata. Я попробовал UIPropertyMetadata("\Images\first16.png"), но это не сработало.
Большое спасибо за любые ваши предложения.