Содержимое кнопки WPF (векторный рисунок) не отображается - PullRequest
0 голосов
/ 17 ноября 2018

У меня в словаре ресурсов Buttons.xml два векторных рисунка для отображения в виде кнопки.

<ResourceDictionary
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <Viewbox
        x:Key="BlueMinusButton"
        Height="20"
        Stretch="Uniform">
        <Canvas
            Width="100"
            Height="100">
            <Canvas.LayoutTransform>
                <ScaleTransform
                    ScaleX="1"
                    ScaleY="-1"
                    CenterX=".5"
                    CenterY=".5" />
            </Canvas.LayoutTransform>
            <Ellipse
                Canvas.Left="0"
                Canvas.Top="0"
                Height="100"
                Width="100"
                Fill="Blue" />
            <Line
                X1="10"
                X2="90"
                Y1="50"
                Y2="50"
                Fill="Black"
                StrokeThickness="10"
                Stroke="Black" />
        </Canvas>
    </Viewbox>
    <Viewbox
        x:Key="GreenPlusButton"
        Height="20"
        Stretch="Uniform">
        <Canvas
            Width="100"
            Height="100">
            <Canvas.LayoutTransform>
                <ScaleTransform
                    ScaleX="1"
                    ScaleY="-1"
                    CenterX=".5"
                    CenterY=".5" />
            </Canvas.LayoutTransform>
            <Ellipse
                Canvas.Left="0"
                Canvas.Top="0"
                Height="100"
                Width="100"
                Fill="Green" />
            <Line
                X1="10"
                X2="90"
                Y1="50"
                Y2="50"
                Fill="Black"
                StrokeThickness="10"
                Stroke="Black" />
            <Line
                X1="50"
                X2="50"
                Y1="10"
                Y2="90"
                Fill="Black"
                StrokeThickness="10"
                Stroke="Black" />
        </Canvas>
    </Viewbox>
</ResourceDictionary>

В view1.xaml У меня есть три кнопки и другие элементы управления, и я использую из ресурсов один и тот же контент для двух кнопок.

<UserControl
    x:Class="ApplicationName.View1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:local="clr-namespace:ApplicationName">
    <UserControl.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary
                    Source="Buttons.xaml" />
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </UserControl.Resources>
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition
                Height="Auto" />
            <RowDefinition
                Height="Auto" />
            <RowDefinition
                Height="Auto" />
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition
                Width="*" />
            <ColumnDefinition
                Width="Auto" />
        </Grid.ColumnDefinitions>
        <Label
            Grid.Column="0"
            Grid.Row="0"
            Content="Object1" />
        <Button
            Grid.Column="1"
            Grid.Row="0"
            Content="{StaticResource BlueMinusButton}"
            Command="{Binding DoCommand1}" />
        <Label
            Grid.Column="0"
            Grid.Row="1"
            Content="Object2" />
        <Button
            Grid.Column="1"
            Grid.Row="1"
            Content="{StaticResource GreenPlusButton}"
            Command="{Binding DoCommand2}" />
        <Label
            Grid.Column="0"
            Grid.Row="2"
            Content="Object3" />
        <Button
            Grid.Column="1"
            Grid.Row="2"
            Content="{StaticResource GreenPlusButton}"
            Command="{Binding DoCommand3}" />
    </Grid>
</UserControl>

view1.xaml используется в view2.xaml.

<UserControl
    x:Class="ApplicationName.View2"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:local="ApplicationName">
    <Grid>
        <StackPanel>
            <Label
                Content="Controls" />
            <local:View1 
                DataContext="{Binding View1Context}"/>
            <Label
                Content="Other controls" />
        </StackPanel>
    </Grid>
</UserControl>

Здесь возникает проблема: при просмотре view2.xaml в редакторе xaml отсутствует содержимое для средней кнопки. То же самое происходит во время выполнения. Если я посмотрю view1.xaml в редакторе xaml, все содержимое кнопки будет видно. Вот картинка из просмотров:

Views

Почему контент не отображается и как мне его вернуть?

1 Ответ

0 голосов
/ 18 ноября 2018

Установите x:Shared="False" для каждого ViewBox, если хотите использовать его в нескольких местах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...