8

Mam dziwny problem z otwarciem UserControl w Expression Blend podczas korzystania z formantu Silverlight Toolkit. Moje UserControl używa Toolkit za ListBoxDragDropTarget następująco:Wyjątek XamlParseException przy użyciu formantu Silverlight Toolkit w mieszaninie 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> 

wszystko działa zgodnie z oczekiwaniami w czasie rzeczywistym i wygląda dobrze w Visual Studio 2008. Jednakże, gdy próbuję otworzyć moje UserControl w mieszance uzyskać XamlParseException: [Line: 0 Pozycja: 0] i nie widzę niczego w widoku projektu. Dokładniej Mieszanka narzeka:

Element „ListBoxDragDropTarget” nie może zostać wyświetlony, ponieważ wystąpił problem z System.Windows.Controls.ListBoxDragDropTarget: TargetType niedopasowania.

Moja aplikacji Silverlight odwołuje System.Windows.Controls.Toolkit z wydaniem toolkit listopada 2009 roku, a ja zrobiłem z pewnością należą te deklaracje przestrzeni nazw dla ListBoxDragDropTarget:

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

Gdybym Skomentuj wrapper ListBoxDragDropTarget i po prostu opuść ListBox Widzę wszystko dobrze w widoku projektu bez błędów. Co więcej, zdałem sobie sprawę, że to się dzieje z różnych kontroli Silverlight Toolkit bo gdybym wykomentuj ListBoxDragDropTarget i zastąpić go

<controlsToolkit:BusyIndicator /> 

dokładnie taki sam błąd występuje w mieszance. Jeszcze dziwniejsze jest to, że jeśli uruchomię zupełnie nową aplikację silverlight w mieszance, mogę dodać te elementy zestawu narzędzi bez żadnego błędu, więc wydaje się, że coś głupiego dzieje się z moimi odwołaniami do zestawów narzędziowych.

Jestem pewien, że ma to coś wspólnego z ładowaniem domyślnych stylów dla formantów toolkitu z pliku generic.xaml, ponieważ błąd ma związek z TargetType, a Blend prawdopodobnie próbuje załadować domyślne style.

Czy ktoś napotkał ten problem przed lub masz jakieś pomysły, co może być mój problem?

+0

Wersja Mieszanka? – AnthonyWJones

+0

Expression Blend 3, a dokładnie 3.0.1927.0 –

Odpowiedz

11

Witam, mieliśmy dokładnie ten sam problem, rozwiązaliśmy go, sprawdzając referencje w projekcie, który miał ten problem. Wszystkie zestawy odniesionych zestawów narzędzi powinny znajdować się w tym samym katalogu na dysku.

Nasze odniesienie do projektu do System.Windows.Controls.Toolkit.dll zawsze "przeskakuje" z powrotem do oryginalnej ścieżki, która była przyczyną problemu. Rozwiązaliśmy, edytując plik projektu w Notatniku ++ (lub dowolnym z twoich ulubionych edytorów tekstu) i zakodowaliśmy ścieżkę, na której mógłby znaleźć zespół.

Mam nadzieję, że to pomoże.

+0

I wyrzucił projekt, który miał ten problem dawno temu i skończył robić inne rzeczy, więc nie mam sposobu, aby to zweryfikować. Na razie mam zamiar oznaczyć to jako odpowiedź, ponieważ wygląda na to, że inni stają wobec tego problemu, jeśli nie kończy się na pracy dla wielu ludzi, dzięki czemu mogę je z powrotem otworzyć –

+0

Dziękuję, naprawdę uratowałeś mi dwa dni głupoty;) – Peymankh

+0

dziękuję bardzo, że uratowałeś mój dzień !! :) –

5

Visual Studio (może Mieszanka zbyt) trzeba dodać odwołanie do:

System.Windows.Controls.Toolkit.Internals.dll

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

+0

Rozwiązało to dla mnie. Zauważ, że najnowsza wersja (dla Silverlight 5) znajduje się w "C: \ Program Files (x86) \ Microsoft SDK \ Silverlight \ v5.0 \ Toolkit \ dec11 \ Bin \ System.Windows.Controls.Toolkit.Internals.dll – andrewpm

1

Używam Silverlight 5 zestaw narzędzi i posiadające XamlParseException podczas korzystania kontrolę BusyIndicator toolkit w Expression Blend dla SL 5 wszystkie powyższe rozwiązania nie pomogły, ale znalazłem inny obejścia jej raczej brudny, ale pozwala mi na podjęcie pracy w BusyIndecator Expression Blend,

  1. wynikać z kontrolą

    public class BusyIndicatorEx : BusyIndicator 
    { 
        public BusyIndicatorEx() 
        { 
         this.DefaultStyleKey = typeof(BusyIndicatorEx); 
        } 
    } 
    
  2. utworzyć styl dla kontroli pochodzącej (wystarczy skopiować styl z BusyIndicator kodu źródłowego do th EMES/generic.xaml i typ docelowy zmiana local:BusyIndicatorEx)

+0

Jak mogę skopiować styl z BusyIndicator? Gdzie jest "themes/generic.xaml"? – Jordan

0

miałem ten sam problem, który zostały rozwiązane przez wprowadzenie obojętne odniesienie w kodzie za Wrap do Panelu.

Wiem, że to trochę C++ y, ale mogę sobie wyobrazić, że to dlatego, że mamy pośrednie odniesienie do panelu wrap wewnątrz szablonu, a nie na stronie najwyższego poziomu, więc program ładujący nie wie, co załadować podczas inicjalizacji . Naprawdę lubię rozumieć dokładny powód.

Właśnie odwołuje System.Windows.Controls.Toolkit i wprowadzić następujące państwa w kodzie za:

System.Windows.Controls.WrapPanel _dummy; 
Powiązane problemy