У меня есть небольшая проблема, и мне просто интересно, как лучше всего ее обойти:
У меня есть глобальный стиль в app.xaml, который определяет стиль для ряда элементов управления,Он также указывает некоторые изображения, используемые в некоторых других элементах управления.
Область, представляющая интерес в файле app.xaml, выглядит следующим образом:
<!-- Button Icons -->
<BitmapImage x:Key="BackIcon" UriSource="../Images/BackIcon.png" />
<BitmapImage x:Key="PrintIcon" UriSource="../Images/PrintIcon.png" />
<BitmapImage x:Key="ClearIcon" UriSource="../Images/ClearIcon.png" />
<!-- Default Button Style -->
<Style TargetType="Button">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Grid>
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="CommonStates">
<VisualState x:Name="Pressed">
<Storyboard>
<ColorAnimation Duration="00:00:00.00" To="#999999" Storyboard.TargetName="BackgroundColor" Storyboard.TargetProperty="Color" />
</Storyboard>
</VisualState>
<VisualState x:Name="Disabled">
<Storyboard>
<ColorAnimation Duration="00:00:00.00" To="#bbbbbb" Storyboard.TargetName="BackgroundColor" Storyboard.TargetProperty="Color" />
</Storyboard>
</VisualState>
<VisualState x:Name="MouseOver" />
<VisualState x:Name="Normal"/>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<Border Name="BackgroundBorder" BorderThickness="0" CornerRadius="8">
<Border.Background>
<SolidColorBrush x:Name="BackgroundColor" Color="#dddddd" />
</Border.Background>
<ContentPresenter
x:Name="content"
Content="{TemplateBinding Content}"
VerticalAlignment="Center" HorizontalAlignment="Center" />
</Border>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
И структура проекта выглядит следующим образом:
root\
|-- App.xaml
|-- Mainpage.xaml(.cs)
|-- Images\
| |-- BackIcon.png
| |-- ClearIcon.png
| |-- PrintIcon.png
|-- Controls\
|-- ControlOne.xaml(.cs)
|-- ControlTwo.xaml(.cs)
|-- ...
Итак, у меня в ControlOne есть кнопка, содержимое которой содержит изображение, а его источником является {StaticResource ClearIcon}.Это работает нормально, но если бы я поместил кнопку в MainPage.xaml с тем же изображением и статическим ресурсом, это не получилось бы, так как относительное расположение изображения неверно.Теперь это должно быть Images / ClearIcon.png, а не ../Images/ClearIcon.png.
Так каков наилучший способ указать ресурсы изображения в стиле / теме и сделать их правильными независимо от того, где находитсяресурс используется?
Кроме того, я не уверен, что сделал это немного странным образом, но я не хотел помещать изображения непосредственно в шаблон кнопки, как тогданеобходимо создать три разных стиля кнопки для каждой кнопки, когда стиль остается прежним, меняется только изображение!
Заранее большое спасибо!
Andy