2013-02-12 15 views
5

Pracuję nad projektem Express WPF VS 2012 (kod C# z tyłu) i otrzymuję komunikat o błędzie "Wykryto pętlę we właściwościach wyrażeń". Zanim przejdę dalej, wiem, dlaczego to robię - po prostu nie jestem pewna, co z tym zrobić, a nawet czy trzeba to zrobić, ponieważ mimo tego, że pojawia się na liście błędów i jest podkreślona na niebiesko, program kompiluje i działa dobrze. Zrobiłem to oczywiście, a wyniki się zmieniły. Moje pytanie jest dwu-parter, ale po pierwsze, tu jest wybiegiem:Wykryto pętlę w wyrażeniach właściwości

Kod wykraczająca:

<Style TargetType="{x:Type Button}" BasedOn="{StaticResource {x:Type Button}}"> 
<!-- setter properties --> 
</Style> 

Jak widać, jest to styl dla przycisku, który odnosi się do przycisku, który jest, co powoduje ten problem. Pierwszy obejście I czytaj zaangażowany oddzielenie kodu tak:

<Style x:Key="ButtonStyleToApply" TargetType="{x:Type Button}" BasedOn="{StaticResource {x:Type Button}}"> 
    <!-- setter properties --> 
</Style> 
<!-- and in another style dictionary, --> 
<Style TargetType="{x:Type Button}" BasedOn="{StaticResource ButtonStyleToApply}"/> 

... a potem dwa zestawy w stylu pójść do różnych słowników. Oczywiście to też nie przyniosło żadnego pożytku - VS nadal węszył, co robię, ale wciąż kompiluje i działa dobrze. Oto kolejne obejście tego problemu:

"W programie Visual Studio wystąpiły pewne zmiany architektoniczne w programie XAML Designer, który cofnął ten scenariusz. Będziemy pracować nad poprawą tego doświadczenia w przyszłości, ale teraz można obejść ten problem nie definiowanie zasobów w obiekcie Application (App.xaml), ale zamiast tego definiowanie ich w dokumencie lokalnym (MainPage.xaml) "

Ta wiadomość została opublikowana w zapytaniu o wsparcie techniczne Here. (Connect.Microsoft.Com)

Ale ufam, że czerpię z doświadczeń każdego człowieka. Co mogą mi powiedzieć moi koledzy? Moje pytanie jest dwuczęściowe. 1. Czy muszę nawet zawracać sobie głowę obejściem, jeśli program się kompiluje? I 2. Jeśli dobrze mi idzie, czy istnieje sposób, aby powiedzieć VS, aby to zignorował? Wiem, że ignorowanie go z mojej strony lub VS jest prawdopodobnie uważane za "złe praktyki", ale poza tym ...?

+0

Tylko dla FYI: proszę nie podawać nazw znaczników w swoich tytułach; oprogramowanie troszczy się o to. Zobacz: http://meta.stackexchange.com/questions/130242/using-tags-in-question-titles –

+0

zrozumiano, dziękuję :) –

Odpowiedz

12

Nie ma nic złego w używanej składni; Legalne jest definiowanie niejawnego stylu opartego na istniejącym stylu niejawnym. Podany przykład kodu działa dla mnie w VS 2010 bez żadnych skarg, ale powoduje zgłoszenie błędu w VS2012.

Ponieważ również kompiluje i działa dobrze w obu wersjach, podejrzewam, że problem jest związany z obsługą projektanta XAML VS 2012. To, jak duża transakcja jest dla Ciebie, zależy od tego, jak bardzo polegasz na renderowaniu projektantów dla widoków WPF. (Na przykład zwykle ukrywam renderowany widok i pracuję wyłącznie w widoku XAML.) Jeśli korzystasz z tej funkcji, możesz zauważyć, że nie wszystkie twoje właściwości są poprawnie ustawione w czasie projektowania. Oczywiście, ponieważ setery zwykle nie mają dużego efektu do czasu wykonania, nigdy nie zauważysz różnicy.

I, jak słusznie wskazuje twoje pytanie, nawet Microsoft zidentyfikował to jako regresję w VS2012, co zdecydowanie sugeruje, że nie spodziewają się wystąpienia błędu i prawdopodobnie naprawi błąd projektanta w pewnym momencie w przyszłości .

+0

To zdecydowanie chciałem usłyszeć. Dzięki za pomoc. –

Powiązane problemy