実装した「Silverlight テンプレート コントロール」の ControlTemplate で画像にアクセスする際に問題があります。「ControlDragger」と呼ばれる私のコントロールのスタイルは次のとおりです。
<!-- ControlDragger Menu button style -->
<Style x:Key="MenuButtonStyle" TargetType="Button">
<Setter Property="Margin" Value="5,0" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Grid>
<ContentPresenter HorizontalAlignment="Stretch" VerticalAlignment="Stretch" />
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<!-- ControlDragger -->
<Style TargetType="core:ControlDragger">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="core:ControlDragger">
<Border x:Name="ControlDraggerRoot"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}"
Background="{TemplateBinding Background}"
HorizontalAlignment="{TemplateBinding HorizontalAlignment}"
VerticalAlignment="{TemplateBinding VerticalAlignment}"
MinHeight="{TemplateBinding MinHeight}"
MinWidth="{TemplateBinding MinWidth}"
MaxHeight="{TemplateBinding MaxHeight}"
MaxWidth="{TemplateBinding MaxWidth}"
Height="{TemplateBinding Height}"
Width="{TemplateBinding Width}">
<Grid Background="Transparent">
<Border HorizontalAlignment="Stretch" VerticalAlignment="Stretch" BorderBrush="#DBDBDB" BorderThickness="1" >
<Border.Background>
<LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1">
<GradientStop Color="#F7F7F7" Offset="0" />
<GradientStop Color="#FDFDFD" Offset="1" />
</LinearGradientBrush>
</Border.Background>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="36" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<!-- Title bar plus drag start -->
<Border x:Name="DragStartElement" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" BorderThickness="0"
Background="Transparent">
<TextBlock x:Name="Headline" FontSize="14" Margin="14,5,0,0" />
</Border>
<!-- Clickable icons -->
<Border Grid.Column="1" HorizontalAlignment="Right" VerticalAlignment="Top" Height="26" CornerRadius="13" Margin="0,5,5,0"
BorderThickness="1" BorderBrush="#9EA9B3">
<Border.Background>
<LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1">
<GradientStop Color="#EDECEE" Offset="0" />
<GradientStop Color="#FBFBFC" Offset="1" />
</LinearGradientBrush>
</Border.Background>
<StackPanel Orientation="Horizontal" VerticalAlignment="Center" Margin="5,0">
<Button x:Name="AddIcon" Style="{StaticResource MenuButtonStyle}">
<Image Source="Icon_small_add.png" Stretch="None" />
<!--
<TextBlock Text="A" />
-->
</Button>
<Button x:Name="DeleteIcon" Style="{StaticResource MenuButtonStyle}">
<TextBlock Text="D" />
<!--
<Image Source="Icon_small_delete.png" Stretch="None" />
-->
</Button>
</StackPanel>
</Border>
<!-- Content holder -->
<Border Grid.Row="1" Grid.ColumnSpan="2" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Margin="14,0,14,9">
<ContentPresenter/>
</Border>
</Grid>
</Border>
</Grid>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
このテンプレートには、同様にスタイルが変更された追加ボタンと削除ボタンが含まれています。いずれかのボタンのコンテンツとして TextBlock を配置すると、そのコンテンツ (TextBlock) が表示されます。TextBlock を Image に置き換えると、コンテンツが消えます。画像は、投稿された XAML を含む「Generic.xaml」と同じフォルダーにあります。同じフォルダーに他のpngファイルがあり、ControlTemplateの外側の同じフォルダー(UserControl内)にある他のXAMLファイルでそれらにアクセスし、それらが機能します。
この問題を解決するために私がこれまでに試したことは次のとおりです。
1) ControlDragger.cs がある実装と同じフォルダーに写真をコピーする
2)「OnApplyTemplate」の名前でボタンにアクセスし、コードで画像を設定しようとします
3) 別の png ファイルをロードして、使用されている png ファイルが破損していないことを確認します。
また、Source="http://..." を使用してインターネットからランダムな画像にアクセスしようとしましたが、これはうまくいきました。デバッグ上の理由から、画像に ImageFailed イベントも実装し、「OnApplyTemplate」に添付しました。実際、ロードに失敗しますが、イベント パラメータでは、ロードされなかった理由がわかりません。私が何かを逃した場合、誰かが考えを持っていますか?