Error when using x: Shared = "False" resources in an external assembly in WPF

In our project, we have ResourceDictionarywith some icons, which looks like this:

<ResourceDictionary
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

    <Canvas x:Key="Icon.Refresh"
            x:Shared="False"
            Width="32"
            Height="32"
            Clip="F1 M 0,0L 32,0L 32,32L 0,32L 0,0">
        <Path .../>
        <Path .../>
        <Path .../>
    </Canvas>
</ResourceDictionary>

The attribute is x:Shared="False"needed because otherwise the icon will disappear when I use it in multiple views.

Now we want to create another project with the same icons, so we decided to put them in the library project referenced by both projects.

But when we try to run the application, we always get an error:

The common attribute in the namespace " http://schemas.microsoft.com/winfx/2006/xaml " can only be used in compiled resource dictionaries. "

x:Shared="False", , , .

, , ?

+6
4

, , x:Shared ResourceDictionary. MSDN x: :

ResourceDictionary, x:Shared, . ResourceDictionary XAML .

ResourceDictionary - , Build action Page, BAML ( ) . ResourceDictionary.

BAML XAML, , , XAML. Adam Nathan WPF:

BAML Microsoft (MSIL); , ( ), XAML. BAML XAML.

ResourceDictionary, Resource, XAML, WPF .

+10

, - , . , , . DrawingImage, , .

    <DrawingImage x:Key="diSingle">
        <DrawingImage.Drawing>
            <DrawingGroup>
                <GeometryDrawing Brush="#FF22BAFD" Geometry="F1 M 14.72,15.68L 12.38,15.68L 7.205,5.92L 7.11,5.92L 2.29,15.68L 0,15.68L 6.58,2.56L 7.595,2.56L 14.72,15.68 Z "/>
                <GeometryDrawing Brush="#FF22BAFD" Geometry="F1 M 21.585,25.6C 21.1017,25.6 20.69,25.4275 20.35,25.0825C 20.01,24.7375 19.84,24.3267 19.84,23.85C 19.84,23.37 20.01,22.955 20.35,22.605C 20.69,22.255 21.1017,22.08 21.585,22.08C 22.0783,22.08 22.4975,22.255 22.8425,22.605C 23.1875,22.955 23.36,23.37 23.36,23.85C 23.36,24.3267 23.1875,24.7375 22.8425,25.0825C 22.4975,25.4275 22.0783,25.6 21.585,25.6 Z "/>
                <GeometryDrawing Brush="#FF22BAFD" Geometry="F1 M 28.625,25.6C 28.1417,25.6 27.73,25.4275 27.39,25.0825C 27.05,24.7375 26.88,24.3267 26.88,23.85C 26.88,23.37 27.05,22.955 27.39,22.605C 27.73,22.255 28.1417,22.08 28.625,22.08C 29.1183,22.08 29.5375,22.255 29.8825,22.605C 30.2275,22.955 30.4,23.37 30.4,23.85C 30.4,24.3267 30.2275,24.7375 29.8825,25.0825C 29.5375,25.4275 29.1183,25.6 28.625,25.6 Z "/>
                <GeometryDrawing Brush="#FF22BAFD" Geometry="F1 M 35.665,25.6C 35.1817,25.6 34.77,25.4275 34.43,25.0825C 34.09,24.7375 33.92,24.3267 33.92,23.85C 33.92,23.37 34.09,22.955 34.43,22.605C 34.77,22.255 35.1817,22.08 35.665,22.08C 36.1583,22.08 36.5775,22.255 36.9225,22.605C 37.2675,22.955 37.44,23.37 37.44,23.85C 37.44,24.3267 37.2675,24.7375 36.9225,25.0825C 36.5775,25.4275 36.1583,25.6 35.665,25.6 Z "/>
                <GeometryDrawing Brush="#FF22BAFD" Geometry="F1 M 48.96,25.155L 48.96,28.48L 47.36,28.48L 47.36,25.28C 45.1267,25.28 43.3133,24.8217 41.92,23.905L 41.92,21.12C 42.5267,21.6633 43.3567,22.1192 44.41,22.4875C 45.4633,22.8558 46.4467,23.04 47.36,23.04L 47.36,15.14C 45.08,14.04 43.6033,13.0258 42.93,12.0975C 42.2567,11.1692 41.92,10.0717 41.92,8.805C 41.92,7.30167 42.4325,6.0025 43.4575,4.9075C 44.4825,3.8125 45.7833,3.15667 47.36,2.94L 47.36,9.53674e-007L 48.96,9.53674e-007L 48.96,2.88C 51.12,2.94333 52.6133,3.23333 53.44,3.75L 53.44,6.4C 52.3167,5.60667 50.8233,5.18 48.96,5.12L 48.96,13.24C 51.1733,14.27 52.6867,15.2658 53.5,16.2275C 54.3133,17.1892 54.72,18.2833 54.72,19.51C 54.72,20.9867 54.2117,22.2267 53.195,23.23C 52.1783,24.2333 50.7667,24.875 48.96,25.155 Z M 47.36,12.37L 47.36,5.215C 46.4733,5.38833 45.7717,5.76917 45.255,6.3575C 44.7383,6.94583 44.48,7.66 44.48,8.5C 44.48,9.38 44.6908,10.1017 45.1125,10.665C 45.5342,11.2283 46.2833,11.7967 47.36,12.37 Z M 48.96,15.945L 48.96,22.915C 51.0933,22.4817 52.16,21.4133 52.16,19.71C 52.16,18.29 51.0933,17.035 48.96,15.945 Z "/>
            </DrawingGroup>
        </DrawingImage.Drawing>
    </DrawingImage>

( ) , :

<RibbonToggleButton x:Name="btnSingleline"
                    IsChecked="{Binding RegexOption_Single, Mode=TwoWay}"
                    Label="Single Line"
                    LargeImageSource="{DynamicResource diSingle}"
                    SmallImageSource="{DynamicResource dilines}"
                    ToolTipImageSource="{DynamicResource dilines}"/>
+1

:

WPF x:Shared :

  • ResourceDictionary, x:Shared . ResourceDictionary XAML .

  • A ResourceDictionary containing elements must not be nested in another ResourceDictionary. For example, you cannot use x:Sharedfor elements in a ResourceDictionary that is inside a style that is already a ResourceDictionary element.

https://docs.microsoft.com/en-us/dotnet/framework/xaml-services/x-shared-attribute

0
source

Source: https://habr.com/ru/post/1529190/


All Articles