我刚刚开始尝试使用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>
我做错了什么?
答案 0 :(得分:12)
当我复制粘贴来自另一个控件的颜色字符串时,它在前缀中添加了两个“##”:
<GradientStop Color="##FFCBCBCB" Offset="1" />
仍然是一个糟糕的错误消息。
答案 1 :(得分:6)
与其他人类似 - 这个可怕的错误消息只是意味着我的xaml中出现语法错误:
<CheckBox Height="" IsChecked="{Binding IsChecked, Mode=TwoWay}" Width="80">
注意我没有填写高度值..
答案 2 :(得分:4)
我遇到了同样的错误:
<Border Margin="5" BorderBrush="Black" BorderThickness="" Width="Auto"/>
通过在BorderThickness中添加数字来修复
答案 3 :(得分:3)
就我而言,我更改了项目名称。我收到此错误后。我重新选择了图像,发现我还需要更改图像的资源名称。
<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;在我的情况下是组件。
答案 4 :(得分:3)
在Grid上分配Width =“*”给了我错误,这在第一次看起来很奇怪,但是它试图说的是标记无法转换为实际类型。
答案 5 :(得分:1)
与其他人不同,我的XAML语法正确。
<ImageBrush ImageSource="..\Images\previous_icon.png" />
当我更改图像时,此错误开始显示 - 后来意识到我确实更改了文件夹中的图像,但忘记在项目中包含。
因此,虽然XAML可以在'Desgn'视图中向我展示图像 - 但我遇到了@运行时的异常。 愚蠢的。
答案 6 :(得分:1)
以下是此错误的另一个实例以及我如何解决它。
这似乎是由于我的项目从VS2010升级到VS2012和VS2013造成的。不确定为什么这会是一个问题,但我想是的。
我开发了一个Visual Studio向导来自动化将项目添加到我们非常大的解决方案(300多个项目)的过程,因为我们的开发人员有额外的要求来帮助维护项目。我使用WPF作为向导,这对VS2010很有用。我将项目升级到VS2012和VS2013,我开始收到此错误。事实证明,在某些时候,我的图标和图像文件的路径被搞砸了。一旦我纠正了它 - 我在XAML中直接做了 - 我就不再收到错误了。
如果您可能需要帮助引用资源 - 这是我用来纠正问题的帖子:How to reference an icon resource file reference in XAML
答案 7 :(得分:0)
<DataTrigger Binding="{Binding Path=IsWhiteboardShared}" Value="True">
<Setter Property="Background" Value="StaticResource AccentColorBlueBrush"/>
</DataTrigger>
答案 8 :(得分:0)
我的任务是修复一个无限期显示类似错误消息的错误。当我发现以下问题引起了这个问题时,我有点失望(期待更复杂和灾难性的事情!):
<Style BasedOn="{StaticResource LinkButton}" TargetType="Button" >
LinkButton 应该是 LinkButtonStyle 。
答案 9 :(得分:0)
在BorderBrush
中使用Gray而不是Gray时,我遇到了同样的错误<Setter Property="BorderBrush" Value="Grey"/>
而不是
<Setter Property="BorderBrush" Value="Gray"/>
答案 10 :(得分:0)
我遇到了同样的错误,但是在资源文件夹中使用了错误的路径
我有这个......
<controls:ImageButton Grid.Column="2" ImageButtonSource="Resources/close_normal.png"/>
但我需要这个......
<controls:ImageButton Grid.Column="2" ImageButtonSource="../Resources/close_normal.png"/>
首先要添加../,先退回一个文件夹
答案 11 :(得分:0)
在此代码中使用“OutBox”时,我遇到了同样的错误:
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<materialDesign:PackIcon Kind="OutBox" Width="25" Height="25" VerticalAlignment="Center" Margin="5" Foreground="DodgerBlue"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
OutBox 是未知值,因此更改为“StopCircle”然后修复...