Diferencia entre el atributo de valor y DataTrigger.Value explícito en ResourceDictionary?
-
19-09-2019 - |
Pregunta
Puede alguien decirme por qué el siguiente no funciona, pero el uno después lo hace? Observe el valor = sintaxis en comparación con el uso explícito sobre este último. No entiendo la diferencia.
<Style.Triggers>
<DataTrigger Binding="{Binding ItemType}" Value="{x:Type log:FranchiseAiring}">
<Setter Property="Template" Value="{StaticResource FranchiseRowStyle}" />
</DataTrigger>
</Style.Triggers>
Por encima de lanza una excepción, a continuación funciona 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>
Excepción: Debe especificar tanto Encuadernación y valor para DataTrigger . Error en el objeto 'System.Windows.DataTrigger' en el archivo de anotación '; componente / ResourceDictionaries / LogStyles.xaml'. La línea 14 Posición 15
Seguimiento de la pila: en System.Windows.Markup.XamlParseException.ThrowException (Mensaje de cadena, InnerException Excepción, Int32 lineNumber, Int32 linePosition, Uri baseURI,
Solución
Es probablemente causado por el insecto Anurag vinculada a, pero se debe tener en cuenta que los dos ejemplos que utilizan no son precisamente idéntica desde el punto de vista XAML.
Si convierte a este elemento de sintaxis de la propiedad
Value="{x:Type whatever}"
lo que se obtiene es:
<DataTrigger.Value>
<x:Type TypeName="whatever">
</DataTrigger.Value>
Lo que escriba en su pregunta corresponde en realidad a
Value="{x:Type Type={x:Type whatever}}"
Debido a la semántica de TypeExtension, tanto debe producir el mismo valor en todas las situaciones que se me ocurre. Pero para otros fines que pueden ser diferentes, y pueden cosquillas diferentes errores en WPF.
Debido a esto, es posible que Value="{x:Type Type={x:Type log:FranchiseAiring}}"
podría funcionar para usted. Es posible que desee probarlo y descubrir.
Otros consejos
Es un error que se ha fijado. Mira esto: http: //social.msdn. microsoft.com/Forums/en/wpf/thread/3fd23613-6f1d-4ae6-a279-b99d6fdbc374