Aym*_*udi 5 c# wpf xaml visual-studio xaml-resources
我ResourceDictionary在一个单独的文件中有一个MainSkin.xaml:
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Style x:Key="RoundedButton">
<Setter Property="Control.Template">
<Setter.Value>
<ControlTemplate>
<Viewbox>
<Grid>
<Grid Name="backgroundGrid" Width="80" Height="80" Visibility="Visible">
<Path Data="Some Data Path here" Stretch="Fill" Fill="#FFFFFFFF" Name="Stroke" Visibility="Visible" />
</Grid>
<Path Data="Some Data Path here" Stretch="Uniform" Fill="#FFF9F9F9" Width="44" Height="44" Margin="0,0,0,0" RenderTransformOrigin="0.5,0.5">
<Path.RenderTransform>
<TransformGroup>
<TransformGroup.Children>
<RotateTransform Angle="0" />
<ScaleTransform ScaleX="1" ScaleY="1" />
</TransformGroup.Children>
</TransformGroup>
</Path.RenderTransform>
</Path>
</Grid>
</Viewbox>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ResourceDictionary>
Run Code Online (Sandbox Code Playgroud)
而我把这个资源字典中MergedDictionaries的App.Xaml Application.Resources如下:
<Application.Resources>
<!--Global View Model Locator-->
<vm:ViewModelLocator x:Key="Locator"
d:IsDataSource="True" />
<-- VS is asking for a x:key here, why ? --/>
<ResourceDictionary ----> x:Key="" <----- >
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Skins/MainSkin.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
Run Code Online (Sandbox Code Playgroud)
Visual Studio不会停止要求包含的ResourceDictionary(包含的ResourceDictionary)的ax:Key <ResourceDictionary.MergedDictionaries>,您可以向我解释原因,我该怎么办?
Visual Studio希望您的“合并”上有一个键,ResourceDictionary因为该Resources集合本身是一个ResourceDictionary,并且ResourceDictionary(或任何字典)中的每个项目都必须具有一个键。
通常,您会这样写:
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Skins/MainSkin.xaml" />
</ResourceDictionary.MergedDictionaries>
<!--Global View Model Locator-->
<vm:ViewModelLocator x:Key="Locator"
d:IsDataSource="True" />
</ResourceDictionary>
</Application.Resources>
Run Code Online (Sandbox Code Playgroud)
这会将隐式 ResourceDictionary设置为显式的,然后MergedDictionaries按预期设置属性。因为您不是ResourceDictionary要向隐式密钥添加新密钥,所以不需要单独的密钥。该方法还有实际执行您想要的效果的额外好处:)
| 归档时间: |
|
| 查看次数: |
1491 次 |
| 最近记录: |