1つのxamlファイルで新しいリソースを作成し、別のxamlファイルで参照しようとしています。つまり、私は定義します
<Window.Resources>
<ImageBrush x:Key="TileBrush" TileMode="Tile" ViewportUnits="Absolute" Viewport="0 0 32 32" ImageSource="MyImageButton.png" Opacity="0.3">
</ImageBrush>
</Window.Resources>
そしてそれを別のxamlファイルで使用してみてください
<Grid>
<Button Background="{StaticResource TileBrush}" Margin="5" Padding="5" FontWeight="Bold" FontSize="14">
A Tiled Button
</Button>
</Grid>
ただし、エラー"StaticResource reference 'TileBrush' was not found。"が発生します。同じxamlファイルからリソースを参照できますが、別のファイルから参照する方法がわかりません。
WPFでは、リソース参照はツリーとして機能します。各コントロールにはリソースがあり、子コントロールは親のリソースにアクセスできます。グローバルアプリケーションリソースディクショナリはApp.xamlファイルにあります。このファイルには、複数のリソースディクショナリをマージ済みディクショナリとして含めることができます。次のコードサンプルを参照してください。
<?xml version="1.0" encoding="utf-8"?>
<Application ...>
<Application.Resources>
<ResourceDictionary>
<vm:ViewModelLocator x:Key="Locator" d:IsDataSource="True" />
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="View\SomeFileDictionary.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
</Application>
SomeFileDictionary.xaml
は、プロジェクト構造のView
フォルダーにあります。そして、このように見えます:
<ResourceDictionary xmlns="http://schemas.Microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.Microsoft.com/winfx/2006/xaml"
xmlns:ViewModel="clr-namespace:Cepha.ViewModel"
xmlns:d="http://schemas.Microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
... >
<DataTemplate DataType="{x:Type ViewModel:SomeType}">
<TextBox .../>
</DataTemplate>...
また、このファイル(またはApp.xaml)で定義されている各辞書キーまたはデータテンプレートは、プロジェクトの任意の場所で参照できます。お役に立てれば...
これはapp.xamlファイルで定義する必要があります。これらのリソースはプロジェクト全体で共有されます