Как создать общий стиль для контроля пути в UWP? - PullRequest
1 голос
/ 13 марта 2019

У меня следующий код XAML:

 <Grid>
    <Grid.Resources>
        <ResourceDictionary Source="Styles.xaml"/>
    </Grid.Resources>
    <StackPanel HorizontalAlignment="Center" VerticalAlignment="Center">
        <Path Style="{StaticResource UserIcon}"/>
        <Path Style="{StaticResource UserIcon}"/>
    </StackPanel>
</Grid>

И стиль в Styles.xaml:

<Style x:Key="UserIcon"
       TargetType="Path">
    <Style.Setters>
        <Setter Property="Data" Value="M0 58l0 13 70 0 0 -12c-39,-33 -70,-1 -70,-1zm53 -40c0,-10 -8,-18 -18,-18 -9,0 -17,8 -17,18 0,9 8,17 17,17 10,0 18,-8 18,-17z" />
        <Setter Property="Fill" Value="Black"/>
    </Style.Setters>
</Style>

Проблема: стиль используется только один раз. Второй элемент управления пути не имеет данных из стиля, и в конструкторе (и в исполнении тоже) он выглядит как this .

1 Ответ

3 голосов
/ 13 марта 2019

Я подозреваю, что проблема здесь в том, что Data не является свойством зависимости.Единственный способ найти путь для повторного использования пути - это повторно использовать геометрические данные только в виде простой строки:

<Page.Resources>
    <x:String x:Key="UserIconGeometry">M0 58l0 13 70 0 0 -12c-39,-33 -70,-1 -70,-1zm53 -40c0,-10 -8,-18 -18,-18 -9,0 -17,8 -17,18 0,9 8,17 17,17 10,0 18,-8 18,-17z</x:String>
</Page.Resources>
<StackPanel>
    <Path Data="{StaticResource UserIconGeometry}" Fill="Red" />
    <Path Data="{StaticResource UserIconGeometry}" Fill="Red" />
</StackPanel>

Properly rendering

...