Работя върху принципа на обучение чрез правене и създавам самостоятелна потребителска контрола в 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"), но изглежда не работи.
Много благодаря за всички предложения, които може да имате.