2010-03-08 35 views
16

Tôi vừa mới bắt đầu thử nghiệm với các mẫu WPF so với các kiểu và tôi không chắc mình đang làm gì sai. Mục tiêu bên dưới là thay thế màu sắc của các tùy chọn trong menu. Mã hoạt động tốt với chỉ, nhưng khi tôi sao chép và dán/đổi tên nó cho phân đoạn thứ hai của "MenuChoiceOdd", tôi nhận được lỗi sau:Lỗi mẫu WPF - "Cung cấp giá trị trên 'System.Windows.Baml2006.TypeConverterMarkupExtension' đã ném ngoại lệ."

> Cung cấp giá trị trên 'System.Windows.Baml2006.TypeConverterMarkupExtension' ném một ngoại lệ.

Mẫu mã:

<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> 

Tôi đang làm gì sai?

+0

Sẽ rất thuận tiện nếu ngoại lệ bao gồm số dòng ... –

Trả lời

11

Oy đó là thứ hai ...

Khi tôi sao chép dán chuỗi màu từ một kiểm soát nó đặt hai "##" s trong prefix đây:

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

Vẫn là một thông báo lỗi tệ hại.

+0

Người mới trong WPF tại đây và đây thực sự là một thông báo lỗi đáng sợ – swdev

4

tôi đã có lỗi tương tự do:

<Border Margin="5" BorderBrush="Black" BorderThickness="" Width="Auto"/> 

cố định bằng cách đặt một số trong BorderThickness

3

Trong trường hợp của tôi, tôi đã thay đổi tên dự án. Sau khi tôi nhận được lỗi này. Tôi đã chọn lại hình ảnh và thấy rằng tôi cũng cần thay đổi tên tài nguyên của hình ảnh.

 <Image x:Name="imgSrc" Grid.Row="1" Source="/PREV%20-%20Filter;component/Images/Subtraktive%20Farbmischung%20%28Malen%20mit%20Wasserfarben%29.jpg" /> 

/PREV% 20-% 20Filter; thành phần cần được sửa thành/DSP% 20-% 20Filter; thành phần trong trường hợp của tôi.

3

Chỉ định chiều rộng = "*" trên lưới đã cho tôi lỗi, có vẻ lạ ở lần đầu tiên, nhưng tất cả những gì cố gắng nói là không thể chuyển đổi đánh dấu thành loại thực.

6

Tương tự như vậy cho người khác - thông điệp này lỗi khủng khiếp chỉ có nghĩa là tôi đã có một lỗi cú pháp trong XAML của tôi:

<CheckBox Height="" IsChecked="{Binding IsChecked, Mode=TwoWay}" Width="80"> 

Thông báo tôi đã không điền vào giá trị chiều cao ..

+2

Của tôi là tương tự, nhưng bởi vì tôi đã Button Command = "CommandName" thay vì Command = "{Binding Path = CommandName}". –

0

tôi đã cùng khi tôi quên dấu ngoặc nhọn:

<DataTrigger Binding="{Binding Path=IsWhiteboardShared}" Value="True"> 
    <Setter Property="Background" Value="StaticResource AccentColorBlueBrush"/> 
</DataTrigger> 
0

Tôi đã được giao nhiệm vụ sửa lỗi có thông báo lỗi tương tự được hiển thị quảng cáo vô hạn. Khi tôi phát hiện ra rằng những điều sau đây gây ra vấn đề, tôi có một chút thất vọng (Đã được mong đợi một cái gì đó phức tạp hơn và thảm họa!):

<Style BasedOn="{StaticResource LinkButton}" TargetType="Button" > 

nơi LinkButton cần phải có được LinkButtonStyle.

1

Không giống như những người khác, tôi đã có cú pháp XAML đúng.

<ImageBrush ImageSource="..\Images\previous_icon.png" />   

Lỗi này bắt đầu xuất hiện khi tôi thay đổi hình ảnh của tôi - sau đó nhận ra tôi đã làm thay đổi hình ảnh trong thư mục của tôi nhưng quên Bao gồm nó trong dự án của tôi.

Do đó mặc dù XAML có thể hiển thị cho tôi hình ảnh trong chế độ xem 'Desgn' - Tôi gặp phải ngoại lệ này @ thời gian chạy. Silly one.

0

tôi đã có lỗi tương tự khi sử dụng Grey thay vì Grey trong BorderBrush tôi

<Setter Property="BorderBrush" Value="Grey"/> 

thay vì

<Setter Property="BorderBrush" Value="Gray"/> 
1

Dưới đây là một thể hiện của lỗi này và làm thế nào tôi giải quyết nó.

Điều này dường như đã xảy ra do việc nâng cấp dự án của tôi từ VS2010 lên VS2012 và VS2013. Bạn không chắc chắn lý do tại sao đó sẽ là một vấn đề ở đây, nhưng tôi đoán nó là.

Tôi đã phát triển Visual Studio Wizard để tự động hóa quy trình thêm dự án vào giải pháp rất lớn (hơn 300 dự án) vì có yêu cầu bổ sung cho chúng tôi để giúp duy trì dự án. Tôi đã sử dụng WPF cho trình hướng dẫn và hoạt động tốt cho VS2010. Tôi đã nâng cấp dự án lên VS2012 và VS2013 và tôi bắt đầu bị lỗi này. Hóa ra rằng tại một số điểm, đường dẫn đến các tập tin hình ảnh và biểu tượng của tôi đã bị hỏng. Một khi tôi sửa chữa nó - mà tôi đã làm trực tiếp trong XAML - tôi đã ngừng nhận được lỗi.

Trong trường hợp bạn có thể cần sự giúp đỡ nguồn tham khảo - đây là bài tôi đã sử dụng để sửa chữa các vấn đề của tôi: How to reference an icon resource file reference in XAML

0

Tôi đã có những lỗi tương tự, nhưng đã sử dụng con đường sai cho một hình ảnh trong thư mục nguồn

tôi đã này ...

<controls:ImageButton Grid.Column="2" ImageButtonSource="Resources/close_normal.png"/> 

nhưng tôi cần này ...

<controls:ImageButton Grid.Column="2" ImageButtonSource="../Resources/close_normal.png"/> 

Đã phải thêm ../ khi bắt đầu quay lại một thư mục đầu tiên

Các vấn đề liên quan