Diferencia entre el atributo de valor y DataTrigger.Value explícito en ResourceDictionary?

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

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,

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top