¿Cómo puedo establecer selectivamente la "Visibilidad" de un TabItem a través de DataBinding / Triggers

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

  •  08-07-2019
  •  | 
  •  

Pregunta

Tengo una página de pestaña que debería ocultarse si una propiedad (BlahType) se establece en 1 y se muestra si se establece en 0. Esto es lo que QUIERO hacer:

<TabItem Header="Blah">
    <TabItem.Triggers>
        <DataTrigger Binding="{Binding BlahType}" Value="0">
            <Setter Property="TabItem.Visibility" Value="Hidden" />
        </DataTrigger>
    </TabItem.Triggers>
</TabItem>

El problema es que recibo este error:

"Triggers collection members must be of type EventTrigger"

Si busca ese error en Google, verá que Dr. WPF explica el error . ¿Hay una manera limpia de hacer lo que estoy tratando de lograr aquí?

¿Fue útil?

Solución

Creo que la colección Triggers de un control actualmente solo admite EventTriggers. Si desea utilizar un DataTrigger simplemente colóquelo dentro de un estilo, por ejemplo:

<TabItem Header="Blah">
    <TabItem.Style>
        <Style>
            <Style.Triggers>
                <DataTrigger Binding="{Binding BlahType}" Value="0">
                    <Setter Property="TabItem.Visibility" Value="Hidden" />
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </TabItem.Style>
</TabItem>

Otros consejos

Bueno, no puede hacerlo usando disparadores (no a menos que esté dentro de un DataTemplate, ControlTemplate o un Estilo).

Puede hacerlo utilizando un enlace, necesitará escribir un ValueConverter personalizado que se traducirá entre 0/1 a Visible / Hidden y luego puede vincular la propiedad Visibility a la propiedad BlhaType.

O simplemente puede configurar la Visibilidad en el código y renunciar a un enfoque basado en XAML (eso es lo que habría hecho).

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