Pregunta

Tengo una plantilla de datos que utilizo en muchas páginas, la plantilla de datos contiene un par de botones, quiero ocultar algunos de estos botones disparadores (me refiero a establecer la propiedad IsEnabled de estos botones en la página donde utilizo este DataTemplate).

En otras palabras, incluso me gustaría poner en disparadores de estilo / setters una propiedad 'ButtonXIsEnabled', 'ButtonYIsEnabled' como parte de la DataTemplate ajustable del cuadro de lista donde utilizo este DataTemplate.

Realmente espero que soy lo suficientemente claro, por favor dejar comentarios para más detalles.

Cualquier discusión será muy apreciada! Gracias de antemano.

¿Fue útil?

Solución

Básicamente esto depende de lo que su objeto utilizando para su DataTemplate. En lugar de utilizar algunos ButtonYIsEnabled, ETCS. Trate de usar algunas palabras que se ajustan mejor a su modelo de dominio.

Por ejemplo supongamos que tiene una lista de clientes, y algunos de esos clientes tienen la posibilidad de comprar productos con descuento. A continuación, añadir una propiedad a su cliente llamado CanPurchaseDiscountedProducts, y utilizar esa propiedad en su DataTemplate

<DataTemplate TargetType="{x:Type local:Customer}">
  <!-- Other Items -->
  <Button Content="Purchase Discounted Products" x:Name="discounts" Visibility="Hidden" />
  <DataTemplate.Triggers>
    <DataTrigger Binding="{Binding CanPurchaseDiscountedProducts}" Value="True">
      <Setter TargetName="discounts" Property="Visibility" Value="Visible"/>
    </DataTrigger>
  </DataTemplate.Triggers>
</DataTemplate>

Otros consejos

Una plantilla de datos WPF es una vista de un determinado tipo de objeto ... cómo desea que una instancia de ObjectTypeX mirar. El modelo de datos se puede unir a las propiedades en la instancia subyacente.

Así que si usted tiene una propiedad ButtonXIsEnabled en su instancia, puede enlazar la propiedad Visibilidad del botón que corresponde a la propiedad de instancia. El botón se muestra o se oculta en base al valor en el objeto subyacente.

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