Рестайлинг UWP Toolkit Expander Arrow - PullRequest
0 голосов
/ 26 февраля 2020

Я пытаюсь изменить стиль элемента управления Expander из Windows Community Toolkit, заменяя символ по умолчанию ">" на заполненную стрелку (вроде кнопки Play). После принятого ответа в на этот вопрос я скопировал стиль по умолчанию из репозитория github Community Toolkit и вставил его в ResourceDictionary (с именем CustomStyles.xaml), а затем изменил свойство FontIcon Glyph из  до . Я сослался на ResourceDictionary в разделе Page.Resources, а затем связал новый стиль со свойством Expander HeaderTemplate со ссылкой StaticResource. Все должно работать, но что-то приводит к сбою.

Исключение также не поможет, так как ошибка отображает сообщение Failed to assign to property 'Microsoft.Toolkit.Uwp.UI.Controls.HeaderedContentControl.HeaderTemplate'. The text associated with this error code could not be found.

Может кто-нибудь помочь с этим, пожалуйста?

MainPage.xaml

<Page
x:Class="SharpFTP.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:SharpFTP"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:toolkit="using:Microsoft.Toolkit.Uwp.UI.Controls"
mc:Ignorable="d"
Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<Page.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="CustomStyles.xaml" />
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Page.Resources>
<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*" />
        <ColumnDefinition Width="3*" />
    </Grid.ColumnDefinitions>
    <Grid.RowDefinitions>
        <RowDefinition />
        <RowDefinition Height="Auto" MinHeight="40" />
    </Grid.RowDefinitions>
    <StackPanel x:Name="itemsPanel" Grid.Column="0" Grid.Row="0">
        <toolkit:Expander Header="Favorites" ExpandDirection="Down" HeaderTemplate="{StaticResource expanderFullArrowStyle}">

        </toolkit:Expander>
        <TextBlock Text="Favorites" />
        <StackPanel Orientation="Horizontal">
            <TextBlock Text="Connected to " Style="{ThemeResource SubtitleTextBlockStyle}" Foreground="LightGray" />
            <TextBlock Text="     10.3.12.128" Style="{ThemeResource SubtitleTextBlockStyle}" Foreground="White"/>
        </StackPanel>
        <AppBarSeparator Width="{Binding ActualWidth, ElementName=itemsPanel}" Height="2" Foreground="LightGray" />
    </StackPanel>
</Grid>

ResourceDictionary XAML

Я включил только измененная часть, поскольку полный стиль составляет 300 строк. Полный стиль Expander по умолчанию можно найти здесь

    <FontIcon x:Name="Arrow" Margin="12" FontFamily="Segoe MDL2 Assets" FontSize="12"
              Glyph="&#xE937;" RenderTransformOrigin="0.5,0.5">
              <FontIcon.RenderTransform>
                      <RotateTransform />
              </FontIcon.RenderTransform>
    </FontIcon>

1 Ответ

0 голосов
/ 27 февраля 2020

Причиной вашей ошибки должно быть несоответствие типов.

Вы изменили стиль Expender по умолчанию, поэтому expanderFullArrowStyle не следует использовать на HeaderTemplate. Пожалуйста, попробуйте это:

<toolkit:Expander Header="Favorites" ExpandDirection="Down" Style="{StaticResource expanderFullArrowStyle}">
</toolkit:Expander>
...