表題の件について、スタイルが設定されているButton_Jpa.xamlが他プロジェクトにある画像ファイルへのパス指定ができずで困っております。
ファイルの読み取りの流れとしては、MainWindows.xamlからユーザーコントロールのPage_Top.xamlを読み出し、Page_Top.xamlからリソースディクショナリのButton_Jpa.xamlを読みにいく仕様になっております。
そして、Button_Jpa.xamlのControlTemplate.Triggersにて他のプロジェクトの画像ファイルを指定しております。
エラー個所はMainWindowの
<エラー内容>
リソース 'resources/images/japanese/Button0_jpa.png' を検索できません。
<対象と思われる個所>
xaml
1<!--<Button_Jpa.xaml>--> 2 <BitmapImage x:Key="ImageSource_0" UriSource="pack://application:,,,/AppCore;component/Resources/Images/Japanese/Button0_jpa.png" /> 3 <BitmapImage x:Key="ImageSource_1" UriSource="pack://application:,,,/AppCore;component/Resources/Images/Japanese/Button1_jpa.png" /> 4 <BitmapImage x:Key="ImageSource_2" UriSource="pack://application:,,,/AppCore;component/Resources/Images/Japanese/Button2_jpa.png" /> 5 <BitmapImage x:Key="ImageSource_3" UriSource="pack://application:,,,/AppCore;component/Resources/Images/Japanese/Button3_jpa.png" /> 6
<環境>
VisualStudio2019
<ソリューション構成>
プロジェクト:AppCore(.Net Standardクラスライブラリ)
----- ┗Resources
---------- ┗Images
--------------- ┗Japanese
-------------------- ┗Button*_jpa.png(ビルドアクション:リソース)
※画像ファイルの番号については省略
プロジェクト:AppWPF(WPFアプリ.Net Freamwork / AppCoreを参照)
----- ┣MainWindow.xaml
----- ┣Style
----- ┃ ┗Japanese
----- ┃ ┗Button_Jpa.xaml
----- ┗UserControlObjects
---------- ┗Page
---------- ┗Page_Top.xaml
<以下コード全文>
xaml
1<!--MainWindow.xaml--> 2<Window x:Class="AppWPF.MainWindow" 3 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 4 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 5 xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 6 xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 7 xmlns:page="clr-namespace:AppWPF.UserControlObjects.Page" 8 mc:Ignorable="d" 9 Title="MainWindow" Height="900" Width="1440"> 10 11 12 <Grid> 13 <StackPanel> 14 15 <!-- コンテンツ --> 16 <StackPanel x:Name="ContentsColum" Margin="0" Height="869" VerticalAlignment="Stretch"> 17 <page:Page_Top VerticalAlignment="Stretch" Margin="0,0,0,0"/> ←エラー個所 18 </StackPanel> 19 </StackPanel> 20 </Grid> 21</Window>
xaml
1<!--<Page_Top.xaml>--> 2<UserControl x:Class="AppWPF.UserControlObjects.Page.Page_Top" 3 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 4 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 5 xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 6 xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 7 mc:Ignorable="d" 8 Stylus.IsPressAndHoldEnabled="False" HorizontalAlignment="Center" VerticalAlignment="Center"> 9 10 11 <UserControl.Resources> 12 <ResourceDictionary> 13 <ResourceDictionary.MergedDictionaries> 14 <ResourceDictionary Source="/AppWpf;component/Style/Japanese/Button_Jpa.xaml"/> 15 </ResourceDictionary.MergedDictionaries> 16 </ResourceDictionary> 17 </UserControl.Resources> 18 19 <StackPanel x:Name="CanvasTop" Margin="0,0,0,0" VerticalAlignment="Center" HorizontalAlignment="Center"> 20 <StackPanel x:Name="HeaderColum" Orientation="Horizontal" Height="150" ></StackPanel> 21 <StackPanel x:Name="ContentsColum" Orientation="Horizontal" VerticalAlignment="Center" HorizontalAlignment="Center" > 22 <Button x:Name="ButtonTest" HorizontalAlignment="Center" VerticalAlignment="Center" Width="400" Height="400" Template="{StaticResource ResourceKey=Template_ModeButton}" Cursor="Hand"/> 23 </StackPanel> 24 </StackPanel> 25</UserControl>
xaml
1<!--<Button_Jpa.xaml>--> 2<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 3 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 4 5<!-- 分からないところ -->> 6 <BitmapImage x:Key="ImageSource_0" UriSource="pack://application:,,,/AppCore;component/Resources/Images/Japanese/Button0_jpa.png" /> 7 <BitmapImage x:Key="ImageSource_1" UriSource="pack://application:,,,/AppCore;component/Resources/Images/Japanese/Button1_jpa.png" /> 8 <BitmapImage x:Key="ImageSource_2" UriSource="pack://application:,,,/AppCore;component/Resources/Images/Japanese/Button2_jpa.png" /> 9 <BitmapImage x:Key="ImageSource_3" UriSource="pack://application:,,,/AppCore;component/Resources/Images/Japanese/Button3_jpa.png" /> 10 11 12 <!-- ボタン --> 13 <ControlTemplate x:Key="Template_ModeButton" TargetType="{x:Type Button}"> 14 <!-- 標準時の画像を表示 --> 15 <Border x:Name="border" BorderThickness="0" BorderBrush="Transparent" CornerRadius="200"> 16 <Border.Background> 17 <ImageBrush ImageSource="{StaticResource ImageSource_1}" /> 18 </Border.Background> 19 <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center" /> 20 </Border> 21 22 23 <ControlTemplate.Triggers > 24 <!-- ボタン無効時 --> 25 <Trigger Property="IsEnabled" Value="False"> 26 <Setter TargetName="border" Property="Background" > 27 <Setter.Value> 28 <ImageBrush ImageSource="{StaticResource ImageSource_0}" /> 29 </Setter.Value> 30 </Setter> 31 </Trigger> 32 33 <!-- マウスーバー時の画像を表示 --> 34 <Trigger Property="IsMouseOver" Value="true"> 35 <Setter TargetName="border" Property="Background" > 36 <Setter.Value> 37 <ImageBrush ImageSource="{StaticResource ImageSource_2}" /> 38 </Setter.Value> 39 </Setter> 40 </Trigger> 41 42 <!-- クリック時(長押し)時の画像 --> 43 <!-- Stylus.IsPressAndHoldEnabled="False"をWindowタグまたはButtonタグに追記 --> 44 <Trigger Property="IsPressed" Value="True" > 45 <Setter TargetName="border" Property="Background" > 46 <Setter.Value> 47 <ImageBrush ImageSource="{StaticResource ImageSource_3}" /> 48 </Setter.Value> 49 </Setter> 50 </Trigger> 51 </ControlTemplate.Triggers> 52 53 </ControlTemplate> 54</ResourceDictionary> 55
2019/11/12追記:
再現しないと回答をいただきましたので、新たにAppResources(カスタムコントロールライブラリ)としてプロジェクトを追加作成し、パスを以下に変更すると実行できました。
<BitmapImage x:Key="ImageSource_0" UriSource="pack://application:,,,/AppResources;component/Resources/Images/Japanese/Button0_jpa.png" />
その為、AppCoreの構成が間違っているのではないかと推測が立ちました。
AppCoreの構成については、.Net Standard 2.0のクラスライブラリ(以前でいうPCL)で作っておりました。
関係していると思っていなかったので省いていましたが、なにやらこの辺りに原因がありそうです。
回答2件
あなたの回答
tips
プレビュー