2016-06-13 78 views
5

我有一个XAML文件中定义包括的ResourceDictionary XAML图像与设计预览功能

Image.xaml

<Canvas xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" x:Name="appbar_power" Width="76" Height="76" Clip="F1 M 0,0L 76,0L 76,76L 0,76L 0,0"> 
    <Path Width="38" Height="41.1667" Canvas.Left="19" Canvas.Top="17.4167" Stretch="Fill" Fill="#FFFFFFFF" Data="F1 M 36.4167,36.4167L 36.4167,17.4167L 41.1667,17.4167L 41.1667,36.4167L 36.4167,36.4167 Z M 57,39.5833C 57,50.0767 48.4934,58.5833 38,58.5833C 27.5066,58.5833 19,50.0767 19,39.5833C 19,30.7301 25.0552,23.2911 33.25,21.1819L 33.25,27.8374C 28.6079,29.7165 25.3333,34.2675 25.3333,39.5833C 25.3333,46.5789 31.0044,52.25 38,52.25C 44.9956,52.25 50.6667,46.5789 50.6667,39.5833C 50.6667,34.8949 48.1194,30.8014 44.3333,28.6113L 44.3333,21.6645C 51.7129,24.2728 57,31.3106 57,39.5833 Z "/> 
</Canvas> 

矢量图如果我修改该图像的XAML代码(例如填充Path的属性)所做的更改将立即显示在Visual Studio 2015的Design窗口中。

现在我想创建一个引用此图像的ResourceDictionary。我将xaml代码直接包含在ResourceDictionary中,但在这种情况下,我失去了预览的能力(Design Window在Visual Studio中不可用,我得到“MyResourceDictionary.xaml无法在设计视图中编辑”)。

MyResourceDictionary.xaml

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
        xmlns:local="clr-namespace:Project.XamlResources"> 

    <Canvas x:Key="appbar_power" x:Name="appbar_power" Width="76" Height="76" Clip="F1 M 0,0L 76,0L 76,76L 0,76L 0,0"> 
     <Path Width="38" Height="41" Canvas.Left="19" Canvas.Top="17" Stretch="Fill" Fill="#FFFFFFFF" Data="F1 M 36.4167,36.4167L 36.4167,17.4167L 41.1667,17.4167L 41.1667,36.4167L 36.4167,36.4167 Z M 57,39.5833C 57,50.0767 48.4934,58.5833 38,58.5833C 27.5066,58.5833 19,50.0767 19,39.5833C 19,30.7301 25.0552,23.2911 33.25,21.1819L 33.25,27.8374C 28.6079,29.7165 25.3333,34.2675 25.3333,39.5833C 25.3333,46.5789 31.0044,52.25 38,52.25C 44.9956,52.25 50.6667,46.5789 50.6667,39.5833C 50.6667,34.8949 48.1194,30.8014 44.3333,28.6113L 44.3333,21.6645C 51.7129,24.2728 57,31.3106 57,39.5833 Z "/> 
    </Canvas> 

</ResourceDictionary> 

有没有一种方法来创建的方式类似于以下资源字典:

MyResourceDictionary_new.xaml

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
       xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
       xmlns:local="clr-namespace:Project.XamlResources"> 

<refers_to "Image.xaml"> 

</ResourceDictionary> 
+0

也许[这个答案](http://stackoverflow.com/a/18657314/1977778)可以帮助你;它似乎与你的问题直接相关,\t虽然没有指出一个有效的解决方案... – sentenza

回答

2

希望我正确理解你的意图。如果不让我知道,但这是我可能会做的。

我们把你的Path并将其转换为Resource Dictionary的样式,其中this;

<Canvas x:Key="appbar_power" x:Name="appbar_power" 
     Width="76" Height="76" 
     Clip="F1 M 0,0L 76,0L 76,76L 0,76L 0,0"> 
    <Path Width="38" Height="41" Canvas.Left="19" Canvas.Top="17" 
      Stretch="Fill" Fill="#FFFFFFFF" 
      Data="F1 M 36.4167,36.4167L 36.4167,17.4167L 41.1667,17.4167L 41.1667,36.4167L 36.4167,36.4167 Z M 57,39.5833C 57,50.0767 48.4934,58.5833 38,58.5833C 27.5066,58.5833 19,50.0767 19,39.5833C 19,30.7301 25.0552,23.2911 33.25,21.1819L 33.25,27.8374C 28.6079,29.7165 25.3333,34.2675 25.3333,39.5833C 25.3333,46.5789 31.0044,52.25 38,52.25C 44.9956,52.25 50.6667,46.5789 50.6667,39.5833C 50.6667,34.8949 48.1194,30.8014 44.3333,28.6113L 44.3333,21.6645C 51.7129,24.2728 57,31.3106 57,39.5833 Z "/> 
</Canvas> 

被转换为这个,并把你的资源字典;

<Style x:Key="appbar_power" TargetType="{x:Type Path}"> 
    <Setter Property="Width" Value="38"/> 
    <Setter Property="Height" Value="41"/> 
    <Setter Property="Stretch" Value="Fill"/> 
    <Setter Property="Fill" Value="#FFFFFFFF"/> 
    <Setter Property="Data" Value="F1 M 36.4167,36.4167L 36.4167,17.4167L 41.1667,17.4167L 41.1667,36.4167L 36.4167,36.4167 Z M 57,39.5833C 57,50.0767 48.4934,58.5833 38,58.5833C 27.5066,58.5833 19,50.0767 19,39.5833C 19,30.7301 25.0552,23.2911 33.25,21.1819L 33.25,27.8374C 28.6079,29.7165 25.3333,34.2675 25.3333,39.5833C 25.3333,46.5789 31.0044,52.25 38,52.25C 44.9956,52.25 50.6667,46.5789 50.6667,39.5833C 50.6667,34.8949 48.1194,30.8014 44.3333,28.6113L 44.3333,21.6645C 51.7129,24.2728 57,31.3106 57,39.5833 Z"/> 
</Style> 

从我能告诉你的原始父Canvas没有必要,我只是假设来自你,因为名称空间是多余的制造资产和剪辑没有做任何一个所见即所得的编辑器只是吃剩的东西?

所以现在你的Path是一个实际的模板。我们在现在使用它的情况下,

<Path Style="{StaticResource appbar_power}"/> 

仍然可以让你设置你的属性一样,如果你想改变Fill="Red"或任何你需要做的。现在,您的问题的答案是,然后如果您处于设计视图或文档大纲中,则只需right-click -> Edit Style -> Edit Current,并且您正在实时编辑模板,以便在设计窗口中直接进行更改,但从“资源字典”中你会注意到窗口的变化)。

此外,Blend对于VS不直观地提供的任何资源资产工作来说都非常方便。希望这有助于,欢呼。

附录:

如果你想从你的资源字典中直做,所以你可以看到在那里,一旦你只想打开你的资源字典中所有的资源,并打开资源选项卡。将x:Name添加到Style模板并运行它。我为此亲自使用Blend。但是现在,您会在资源标签中看到您的模板,您可以双击或右键单击 - >编辑,它可以让您在资源字典中主动编辑任何内容。来自Blend的图像示例;

enter image description here

+0

不完全是我在找的东西,但不错的工作!我想我可以很轻松地处理你的建议!非常感谢! – aDone

+0

哦拍,我害怕我不明白你以后是什么?你只是想打开你的资源字典并直接从它编辑模板?我们也可以这么做... –

+0

太棒了!有了这个,我认为它可能适用于我:谢谢! – aDone