Frage

Ich habe eine DataTemplate in app.xaml, die eine Ansicht an ein ViewModel bindet.

<Application.Resources>
    <DataTemplate DataType="{x:Type vm:someviewmodeltype}">
        <vw:somevwcontrol />
    </DataTemplate>
</Application.Resources>

Die obige Vorlage wird nicht angewendet, wenn es keine Stile gibt. In dem Moment, in dem ich einen Stil stelle, so etwas wie ...

<Application.Resources>
    <DataTemplate DataType="{x:Type vm:someviewmodeltype}">
        <vw:somevwcontrol />
    </DataTemplate>
    <Style TargetType="TextBlock">
        <Setter Property="FontSize" Value="20"></Setter>
    </Style>
</Application.Resources>

DataTemplate wird abgeholt und erzielt die gewünschten Ergebnisse ... Ich bin mir nicht sicher, was dort passiert ... Könnte jemand das klären?

Vielen Dank.

War es hilfreich?

Lösung

Beantwortete eine ähnliche Frage hier. Die Frage ist nicht genau die gleiche, dass man zusammengesprungene fusionierte Wörterbücher enthielt, aber es ist höchstwahrscheinlich der gleiche Fehler.

Dies ist ein Optimierungsfehler, siehe dieser Link.

Bei der Erstellung jedes Objekts in XAML, wenn ein Standardstil vorhanden ist (dh Stil mit einem Schlüssel vom Typ), sollte dieser Stil angewendet werden. Wie Sie sich vorstellen können, gibt es mehrere Leistungsoptimierungen, die (implizit) ein leichtes Gewicht wie möglich durchsehen. Einer von ihnen ist, dass wir nicht in Ressourcenwörterbücher schauen, es sei denn, sie werden als „Standardstile enthalten“ gekennzeichnet. Es gibt einen Fehler: Wenn alle Ihre Standardstile in zusammengeführten Wörterbüchern drei Ebenen tief (oder tiefer) verschachtelt sind, wird das Top -Wörterbuch nicht markiert, sodass die Suchfunktion ihn überspringt. Die Arbeit ist es, im Wurzelwörterbuch einen Standardstil für etwas, alles, alles, in das Wurzelwörterbuch zu setzen.

Ich sehe, dass Sie auch die Problemumgehung gefunden haben. Fügen Sie einfach einen Standard -Dummy -Stil in app.xaml hinzu. Es muss keine Setzer usw. haben, so etwas wird auch funktionieren

<Application.Resources>
    <DataTemplate DataType="{x:Type vm:someviewmodeltype}">
        <vw:somevwcontrol />
    </DataTemplate>
    <Style TargetType="{x:Type Rectangle}" /> 
</Application.Resources>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top