Differenza Tra il Valore dell'attributo ed esplicita DataTrigger.Valore in ResourceDictionary?

StackOverflow https://stackoverflow.com/questions/1702141

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,

È stato utile?

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top