Pergunta

Eu tenho um modelo de dados que eu uso em muitas páginas, o modelo de dados contém alguns botões, eu quero esconder alguns destes botões por gatilhos (quero dizer, definindo a propriedade IsEnabled destes botões na página onde eu uso este DataTemplate).

Em outras palavras, eu até gostaria de conjunto em triggers estilo / setters uma propriedade 'ButtonXIsEnabled', 'ButtonYIsEnabled' como parte do configurável DataTemplate da caixa de listagem onde eu uso este DataTemplate.

Eu realmente espero que eu sou bastante clara, por favor deixar um comentário para mais detalhes.

Qualquer discussão será muito apreciado! Agradecemos antecipadamente.

Foi útil?

Solução

Basicamente, isto depende do que opor a sua utilização para o seu datatemplate. Em vez de usar alguns ButtonYIsEnabled, etcs. Tente usar algumas palavras que se encaixam melhor no seu modelo de domínio.

Por exemplo, dizer que você tem uma lista de clientes, e alguns desses clientes têm a capacidade de comprar produtos com desconto. Em seguida, adicione uma propriedade para o seu cliente chamado CanPurchaseDiscountedProducts, e usar essa propriedade em seu 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>

Outras dicas

modelo de dados A WPF é uma vista de um determinado tipo de objeto ... como você deseja uma instância de ObjectTypeX para olhar. O modelo de dados pode ligar-se a propriedades na instância subjacente.

Então, se você tem uma propriedade ButtonXIsEnabled no seu exemplo, você pode vincular propriedade Visibilidade do botão correspondente à propriedade de instância. O botão seria mostrado ou oculto com base no valor no objeto subjacente.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top