8

Tôi đang gặp vấn đề lạ khi mở UserControl trong Blendion Expression khi sử dụng Silverlight Toolkit control. UserControl của tôi sử dụng ListBoxDragDropTarget của bộ công cụ như sau:XamlParseException sử dụng Silverlight Toolkit control trong Expression Blend

<controlsToolkit:ListBoxDragDropTarget mswindows:DragDrop.AllowDrop="True" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch"> 
     <ListBox ItemsSource="{Binding MyItemControls}" ScrollViewer.HorizontalScrollBarVisibility="Disabled"> 
      <ListBox.ItemsPanel> 
       <ItemsPanelTemplate> 
        <controlsToolkit:WrapPanel/> 
       </ItemsPanelTemplate> 
      </ListBox.ItemsPanel> 
     </ListBox> 
</controlsToolkit:ListBoxDragDropTarget> 

mọi thứ hoạt động như mong đợi trong thời gian chạy và có vẻ tốt đẹp trong Visual Studio 2008. Tuy nhiên, khi tôi cố gắng để mở UserControl của tôi trong Blend tôi nhận được XamlParseException: [Line: 0 Vị trí: 0] và tôi không thể nhìn thấy gì trong giao diện thiết kế. Cụ thể hơn, Blend phàn nàn:

Yếu tố "ListBoxDragDropTarget" không thể hiển thị do sự cố với System.Windows.Controls.ListBoxDragDropTarget: TargetType không khớp.

ứng dụng Silverlight của tôi là tham khảo System.Windows.Controls.Toolkit từ bộ công cụ phát hành tháng 11 năm 2009, và tôi đã thực hiện chắc chắn bao gồm những tờ khai không gian tên cho ListBoxDragDropTarget:

xmlns:controlsToolkit="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Toolkit" 
xmlns:mswindows="clr-namespace:Microsoft.Windows;assembly=System.Windows.Controls.Toolkit" 

Nếu tôi nhận xét ra các wrapper ListBoxDragDropTarget kiểm soát và chỉ cần rời khỏi ListBox tôi có thể nhìn thấy tất cả mọi thứ tốt trong xem thiết kế mà không có lỗi. Hơn nữa, tôi nhận ra điều này đang xảy ra với một loạt các điều khiển Toolkit Silverlight vì nếu tôi nhận xét ra ListBoxDragDropTarget và thay thế bằng

<controlsToolkit:BusyIndicator /> 

lỗi chính xác tương tự xảy ra trong Blend. Điều thậm chí còn tuyệt vời hơn nữa là nếu tôi bắt đầu một ứng dụng Silverlight hoàn toàn mới, tôi có thể thêm các phần tử bộ công cụ này mà không có bất kỳ lỗi nào, vì vậy nó có vẻ như một cái gì đó câm đang xảy ra với tham chiếu dự án của tôi đến các bộ công cụ. Tôi chắc rằng điều này có liên quan đến việc tải các kiểu mặc định cho các điều khiển bộ công cụ từ generic.xaml của nó, vì lỗi có liên quan đến TargetType và Blend có lẽ đang cố tải lên các kiểu mặc định.

Có ai gặp sự cố này trước hoặc có bất kỳ ý tưởng nào về vấn đề của tôi không?

+0

Phiên bản Blend? – AnthonyWJones

+0

Expression Blend 3, cụ thể là 3.0.1927.0 –

Trả lời

11

Xin chào chúng tôi đã có chính xác cùng một vấn đề, chúng tôi đã giải quyết nó bằng cách kiểm tra các tham chiếu trong dự án đang gặp sự cố này. Tất cả các bộ công cụ tham chiếu phải nằm trong cùng một thư mục trên đĩa.

Tham chiếu dự án của chúng tôi với System.Windows.Controls.Toolkit.dll luôn 'nhảy' trở lại đường dẫn gốc gây ra sự cố của chúng tôi. Chúng tôi đã giải quyết bằng cách chỉnh sửa tệp dự án trong notepad ++ (hoặc bất kỳ trình soạn thảo văn bản yêu thích nào của bạn) và mã hóa đường dẫn nơi nó có thể tìm thấy hội đồng.

Hy vọng điều này sẽ hữu ích.

+0

I đưa ra dự án đã có vấn đề này từ lâu và kết thúc làm những việc khác, vì vậy tôi không có cách nào để xác minh điều này. Tôi sẽ đánh dấu nó là câu trả lời cho bây giờ vì có vẻ như những người khác phải đối mặt với vấn đề này, nếu nó không kết thúc làm việc cho rất nhiều người tôi có thể mở nó trở lại. –

+0

Cảm ơn người đàn ông, bạn thực sự lưu hai ngày ngu ngốc cho tôi;) – Peymankh

+0

cảm ơn rất nhiều bạn đã lưu ngày của tôi quá !! :) –

5

Đối với Visual Studio (có thể Blend quá), bạn cần phải thêm một tham chiếu đến:

System.Windows.Controls.Toolkit.Internals.dll

"C: \ Program Files \ Microsoft SDK \ Silverlight \ v4.0 \ Toolkit \ Apr10 \ Bin \ System.Windows.Controls.Toolkit.Internals.dll "

+0

Điều này giải quyết nó cho tôi. Lưu ý rằng phiên bản mới nhất (cho Silverlight 5) nằm trong "C: \ Program Files (x86) \ Microsoft SDK \ Silverlight \ v5.0 \ Toolkit \ dec11 \ Bin \ System.Windows.Controls.Toolkit.Internals.dll – andrewpm

1

Tôi đang sử dụng Silverlight 5 bộ công cụ và có XamlParseException khi sử dụng kiểm soát BusyIndicator toolkit trong Expression Blend cho SL 5, tất cả các giải pháp trên không giúp nhưng tôi tìm thấy một workaround, nó khá bẩn nhưng cho phép tôi để làm BusyIndecator làm việc tại Expression Blend,

  1. xuất phát từ kiểm soát

    public class BusyIndicatorEx : BusyIndicator 
    { 
        public BusyIndicatorEx() 
        { 
         this.DefaultStyleKey = typeof(BusyIndicatorEx); 
        } 
    } 
    
  2. tạo phong cách để kiểm soát nguồn gốc (chỉ cần sao chép phong cách từ BusyIndicator mã nguồn để th Emes/generic.xaml, và loại thay đổi mục tiêu để local:BusyIndicatorEx)

+0

Làm cách nào để sao chép phong cách từ BusyIndicator? "themes/generic.xaml" ở đâu? – Jordan

0

tôi đã cùng một vấn đề đã được giải quyết bằng cách đưa ra một tham chiếu giả trong mã phía sau để các Gói Panel.

Tôi biết đó là một chút C++ y nhưng tôi có thể tưởng tượng đó là vì chúng tôi có tham chiếu gián tiếp đến bảng điều khiển bọc bên trong mẫu và không ở trên trang cấp cao nhất để trình tải không biết tải gì khi khởi tạo . Tôi thực sự thích hiểu lý do chính xác, mặc dù.

Tôi chỉ tham chiếu System.Windows.Controls.Toolkit và giới thiệu sau thành viên trong mã đằng sau:

System.Windows.Controls.WrapPanel _dummy;