Différence entre attribut de valeur et DataTrigger.Value explicite dans ResourceDictionary?

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

Question

Quelqu'un peut-il me dire pourquoi ce qui suit ne fonctionne pas, mais celle d'après le fait? Notez la valeur = syntaxe par rapport à l'utilisation explicite sur ce dernier. Je ne comprends pas la différence.

<Style.Triggers>
    <DataTrigger Binding="{Binding ItemType}" Value="{x:Type log:FranchiseAiring}">
        <Setter Property="Template" Value="{StaticResource FranchiseRowStyle}" />
    </DataTrigger>
</Style.Triggers>

Au-dessus jette une exception, au-dessous, fonctionne très bien:

<Style.Triggers>
<DataTrigger Binding="{Binding ItemType}">
    <DataTrigger.Value>
        <x:Type Type="{x:Type log:FranchiseAiring}" />
    </DataTrigger.Value>
    <Setter Property="Template" Value="{StaticResource FranchiseRowStyle}" />
</DataTrigger>

Exception: doit spécifier à la fois Reliure et valeur pour DataTrigger . Erreur à l'objet 'System.Windows.DataTrigger' dans le fichier de balisage "; composant / ResourceDictionaries / LogStyles.xaml. Ligne 14 Position 15

Trace de la pile:    à System.Windows.Markup.XamlParseException.ThrowException (message String, Exception innerException, Int32 lineNumber, Int32 LinePosition, Uri baseURI,

Était-ce utile?

La solution

Il a probablement causé par le bug lié à Anurag, mais vous devez savoir que les deux exemples que vous avez utilisés ne sont pas exactement identiques d'un point de vue XAML.

Si vous convertissez ce à la syntaxe de la propriété de l'élément

Value="{x:Type whatever}"

ce que vous obtenez est:

<DataTrigger.Value>
  <x:Type TypeName="whatever">
</DataTrigger.Value>

Qu'est-ce que vous avez écrit dans votre question correspond en fait à

Value="{x:Type Type={x:Type whatever}}"

En raison de la sémantique de TypeExtension, à la fois doit produire la même valeur dans toutes les situations que je peux penser. Mais pour d'autres fins, ils peuvent être différents, et ils peuvent chatouiller différents bugs dans WPF.

En raison de cela, il est possible que Value="{x:Type Type={x:Type log:FranchiseAiring}}" pourrait fonctionner pour vous. Vous pouvez essayer et trouver.

Autres conseils

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top