use*_*716 17 wpf resources xaml staticresource
我试图在一个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>
Run Code Online (Sandbox Code Playgroud)
并尝试在另一个xaml文件中使用它
<Grid>
<Button Background="{StaticResource TileBrush}" Margin="5" Padding="5" FontWeight="Bold" FontSize="14">
A Tiled Button
</Button>
</Grid>
Run Code Online (Sandbox Code Playgroud)
但是我收到错误"找不到StaticResource引用'TileBrush'." 我可以从同一个xaml文件引用该资源,但不知道如何从另一个文件中执行此操作.
Raú*_*año 27
在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>
Run Code Online (Sandbox Code Playgroud)
在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>...
Run Code Online (Sandbox Code Playgroud)
此文件(或App.xaml)中定义的每个字典键或数据模板都可以在项目的任何位置引用.希望这可以帮助...