Ответ 1
В понедельник...
Когда я скопировал вставку строки цвета из другого элемента управления, она помещала здесь два "##" в префикс:
<GradientStop Color="##FFCBCBCB" Offset="1" />
Все еще отвратительное сообщение об ошибке.
Я только начал экспериментировать с шаблонами WPF против стилей, и я не уверен, что я делаю неправильно. Цель ниже - чередовать цвета опций в меню. Код работает нормально только с помощью, но когда я копирую и вставляю/переименовываю его для второго сегмента "MenuChoiceOdd", я получаю следующую ошибку:
> Предоставить значение в 'System.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>
Что я делаю неправильно?
В понедельник...
Когда я скопировал вставку строки цвета из другого элемента управления, она помещала здесь два "##" в префикс:
<GradientStop Color="##FFCBCBCB" Offset="1" />
Все еще отвратительное сообщение об ошибке.
Подобно другим - это ужасное сообщение об ошибке просто означало, что у меня была синтаксическая ошибка в моем xaml:
<CheckBox Height="" IsChecked="{Binding IsChecked, Mode=TwoWay}" Width="80">
Заметьте, что я не заполнил значение высоты.
У меня была такая же ошибка, вызванная:
<Border Margin="5" BorderBrush="Black" BorderThickness="" Width="Auto"/>
фиксируется путем помещения числа в BorderThickness
В моем случае я изменил название проекта. После того, как я получил эту ошибку. Я повторно выбрал изображения и увидел, что мне нужно изменить имя ресурса изображений тоже.
<Image x:Name="imgSrc" Grid.Row="1" Source="/PREV%20-%20Filter;component/Images/Subtraktive%20Farbmischung%20%28Malen%20mit%20Wasserfarben%29.jpg" />
/PREV %20- %20Filter; компонент должен быть скорректирован на /DSP %20- %20Filter; компонент в моем случае.
Назначение Width = "*" на Grid дало мне ошибку, которая выглядит странно в первый раз, но все, что она пытается сказать, заключается в том, что разметка не может быть преобразована в фактический тип.
В отличие от других, у меня был правильный синтаксис XAML.
<ImageBrush ImageSource="..\Images\previous_icon.png" />
Эта ошибка начала появляться, когда я сменил изображение - позже понял, что я изменил изображение в своей папке, но забыл Включить в мой проект.
Следовательно, хотя XAML может показать мне изображение в "Desgn" View - я столкнулся с этим исключением @время выполнения. Глупый.
Вот еще один пример этой ошибки и как я ее разрешил.
Это, по-видимому, вызвано обновлением моего проекта от VS2010 до VS2012 и VS2013. Не уверен точно, почему это было бы проблемой здесь, но, я думаю, это так.
Я разработал мастер Visual Studio для автоматизации процесса добавления проекта в наше очень крупное решение (более 300 проектов), поскольку для поддержки проекта мы требуем дополнительных требований к поддержке проекта. Я использовал WPF для мастера и хорошо работал для VS2010. Я обновил проект до VS2012 и VS2013, и я начал получать эту ошибку. Оказывается, в какой-то момент путь к моим значкам и файлам изображений был прикручен. Как только я исправил это, что я сделал непосредственно в XAML, я перестала получать ошибку.
Если вам может понадобиться помощь, ссылающаяся на ресурсы - это сообщение, которое я использовал для исправления моих проблем: Как ссылаться на ссылку файла ресурса значка в XAML
У меня было то же самое, когда я забыл фигурные скобки:
<DataTrigger Binding="{Binding Path=IsWhiteboardShared}" Value="True">
<Setter Property="Background" Value="StaticResource AccentColorBlueBrush"/>
</DataTrigger>
Мне было поручено исправить ошибку, когда подобное сообщение об ошибке показывалось бесконечно. Когда я узнал, что следующее вызвало эту проблему, я был немного разочарован (ожидал чего-то более сложного и катастрофического!):
<Style BasedOn="{StaticResource LinkButton}" TargetType="Button" >
где LinkButton должно быть LinkButtonStyle.
У меня была такая же ошибка при использовании Gray вместо Gray в моей BorderBrush
<Setter Property="BorderBrush" Value="Grey"/>
вместо
<Setter Property="BorderBrush" Value="Gray"/>
У меня была такая же ошибка, но я использовал неправильный путь для изображения в папке ресурсов
У меня было это...
<controls:ImageButton Grid.Column="2" ImageButtonSource="Resources/close_normal.png"/>
но мне это нужно...
<controls:ImageButton Grid.Column="2" ImageButtonSource="../Resources/close_normal.png"/>
Пришлось добавить../в начале, чтобы сначала вернуться к одной папке