Шаблонная ошибка WPF - “Обеспечивает значение в 'Системе. Windows. Baml2006. TypeConverterMarkupExtension' выдал исключение”.

Я только что начал экспериментировать с шаблонами WPF по сравнению со стилями, и я не уверен, что я делаю неправильно. Цель ниже состоит в том, чтобы чередовать цвета опций в меню. Код хорошо работает только с, но когда я копирую и вставляю/переименовываю его для второго сегмента "MenuChoiceOdd", я получаю следующую ошибку:

> Обеспечьте значение в 'Системе. Windows. Baml2006. TypeConverterMarkupExtension' выдал исключение.

Образец кода:

<Window x:Class="WpfApplication1.Template_Testing"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="Template_Testing" Height="300" Width="300">
    <Grid>
        <Grid.Resources>
            <ControlTemplate x:Key="MenuChoiceEven">
                <Border BorderThickness="1" BorderBrush="#FF4A5D80">
                <TextBlock Height="Auto" HorizontalAlignment="Stretch" Margin="0"  Width="Auto" FontSize="14" Foreground="SlateGray" TextAlignment="Left" AllowDrop="True" Text="{Binding Path=Content, RelativeSource={RelativeSource TemplatedParent}}">
                    <TextBlock.Background>
                        <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
                            <GradientStop Color="White" Offset="0" />
                            <GradientStop Color="#FFC2CCDB" Offset="1" />
                        </LinearGradientBrush>
                    </TextBlock.Background>
                </TextBlock>
                </Border>
            </ControlTemplate>
            <ControlTemplate x:Key="MenuChoiceOdd">
                <Border BorderThickness="1" BorderBrush="#FF4A5D80">
                    <TextBlock Height="Auto" HorizontalAlignment="Stretch" Margin="0"  Width="Auto" FontSize="14" Foreground="SlateGray" TextAlignment="Left" AllowDrop="True" Text="{Binding Path=Content, RelativeSource={RelativeSource TemplatedParent}}">
                    <TextBlock.Background>
                        <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
                            <GradientStop Color="White" Offset="0" />
                            <GradientStop Color="##FFCBCBCB" Offset="1" />
                        </LinearGradientBrush>
                    </TextBlock.Background>
                    </TextBlock>
                </Border>
            </ControlTemplate>            
        </Grid.Resources>
        <Border BorderBrush="SlateGray" BorderThickness="2" Margin="10" CornerRadius="10" Background="LightSteelBlue" Width="200">
            <StackPanel Margin="4">
                <TextBlock Height="Auto" HorizontalAlignment="Stretch" Margin="2,2,2,0" Name="MenuHeaderTextBlock" Text="TextBlock" Width="Auto" FontSize="16" Foreground="PaleGoldenrod" TextAlignment="Left" Padding="10" FontWeight="Bold"><TextBlock.Background><LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"><GradientStop Color="LightSlateGray" Offset="0" /><GradientStop Color="DarkSlateGray" Offset="1" /></LinearGradientBrush></TextBlock.Background></TextBlock>
                <StackPanel Height="Auto" HorizontalAlignment="Stretch" Margin="2,0,2,0" Name="MenuChoicesStackPanel" VerticalAlignment="Top" Width="Auto">
                    <Button Template="{StaticResource MenuChoiceEven}" Content="Test Even menu element" />
                    <Button Template="{StaticResource MenuChoiceOdd}"  Content="Test odd menu element" />
                </StackPanel>
            </StackPanel>
        </Border>
    </Grid>
</Window>

Что я делаю неправильно?

16
задан jasonk 8 March 2010 в 16:43
поделиться

1 ответ

Ой, сегодня понедельник ...

Когда я скопировал и вставил цветовую строку из другого элемента управления, здесь в префиксе были вставлены два символа «##»:

<GradientStop Color="##FFCBCBCB" Offset="1" />

По-прежнему паршивое сообщение об ошибке.

12
ответ дан 30 November 2019 в 17:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: