У меня есть Grid
и в нем два Path
с. Когда один стиль применяется к Grid
, первый Path
должен иметь некоторые Data
, а второй - другие данные. Когда применяется стиль секунд, первый Path
должен иметь другой Data
, а второй Path
должен иметь другой другой Data
. Я хочу иметь возможность установить имя целевого элемента Setter
.
Я попробовал код ниже. Я получаю два креста вместо одного треугольника слева и один крест справа.
<Window x:Class="cs_wpf_test_2.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:cs_wpf_test_2"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<Window.Resources>
<Style x:Key="styleWithPlusSign" TargetType="Path">
<Setter Property="Path.Data" Value="M 5,95 L 95,95 50,5 5,95"></Setter>
<Setter Property="Path.Data" Value="M 50,10 L 50,10 L 50,90 M 10,50 L 90,50"></Setter>
</Style>
</Window.Resources>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Path Stroke="Blue"
Stretch="Fill"
x:Name="MyFirstPath"
Style="{StaticResource styleWithPlusSign}"
/>
<Path Grid.Column="1" Stroke="Black"
StrokeThickness="4"
Stretch="Uniform"
x:Name="MySecondPath"
Style="{StaticResource styleWithPlusSign}"/>
</Grid>
</Window>
Я получаю желаемый результат, используя этот негибкий код:
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Path Stroke="Blue"
Stretch="Fill"
x:Name="MyFirstPath"
Data="M 5,95 L 95,95 50,5 5,95"
/>
<Path Grid.Column="1" Stroke="Black"
StrokeThickness="4"
Stretch="Uniform"
x:Name="MySecondPath"
Data="M 50,10 L 50,10 L 50,90 M 10,50 L 90,50"/>
</Grid>
Скриншот:
Если я пытаюсь использовать TargetName
атрибут Setter
s, я получаю ошибки:
XDG0029 | Имя «MyFirstPath» не распознано.
XDG0029 | Имя «MySecondPath» не распознано.
Обновление
Прошу прощения за неясность. Я хочу 2 стиля, например styleWithPlusSign
и styleWithMinusSign
.
-
styleWithPlusSign
должен установить треугольник с углом, направленным вверх, и крестом справа.
-
styleWithMinusSign
должен установить треугольник с углом, направленным вниз, и знаком минус (линия) справа.