Differenza Tra il Valore dell'attributo ed esplicita DataTrigger.Valore in ResourceDictionary?
-
19-09-2019 - |
Domanda
Qualcuno può dirmi perché il seguente non funziona, ma quello dopo si fa?Si noti che il Valore= sintassi contro l'esplicito uso di questi ultimi.Non riesco a capire la differenza.
<Style.Triggers>
<DataTrigger Binding="{Binding ItemType}" Value="{x:Type log:FranchiseAiring}">
<Setter Property="Template" Value="{StaticResource FranchiseRowStyle}" />
</DataTrigger>
</Style.Triggers>
Sopra genera un'eccezione, di seguito funziona bene:
<Style.Triggers>
<DataTrigger Binding="{Binding ItemType}">
<DataTrigger.Value>
<x:Type Type="{x:Type log:FranchiseAiring}" />
</DataTrigger.Value>
<Setter Property="Template" Value="{StaticResource FranchiseRowStyle}" />
</DataTrigger>
Eccezione:Deve specificare sia Vincolante e Valore per DataTrigger.Errore in oggetto 'del Sistema.Windows.DataTrigger' nel file di markup ';componente/ResourceDictionaries/LogStyles.xaml' Linea 14 Posizione 15.
Stack Trace:a Sistema.Windows.Markup.XamlParseException.ThrowException(String message, Eccezione innerException, Int32 lineNumber, Int32 linePosition, Uri baseUri,
Soluzione
Esso è probabilmente causato dal bug Anurag collegati ad esso, ma si dovrebbe essere consapevoli del fatto che i due esempi che hai usato non sono proprio identici XAML punto di vista.
Se si converte proprietà dell'elemento di sintassi
Value="{x:Type whatever}"
quello che si ottiene è:
<DataTrigger.Value>
<x:Type TypeName="whatever">
</DataTrigger.Value>
Quello che hai scritto nella tua domanda in realtà corrisponde a
Value="{x:Type Type={x:Type whatever}}"
Perché la semantica di TypeExtension, entrambi dovrebbero produrre lo stesso valore in ogni situazione a cui posso pensare.Ma per altri scopi possono essere diversi e potrebbero solleticare diversi bug in WPF.
A causa di questo, è possibile che Value="{x:Type Type={x:Type log:FranchiseAiring}}"
potrebbe funzionare per voi.Si potrebbe desiderare di provare e scoprire.
Altri suggerimenti
È un bug che è stato risolto.Controllare questo:http://social.msdn.microsoft.com/Forums/en/wpf/thread/3fd23613-6f1d-4ae6-a279-b99d6fdbc374