Pergunta

Eu estou tendo um problema com o controle WPF Tab Ver que eu estava esperando que alguém aqui pode ser capaz de me ajudar.

Eu quero o meu controle de exibição guia para usar cantos arredondados para os cabeçalhos de guia, porque eu acho abas arredondadas olhar melhor.

Para fazer isso eu modificou o modelo de controle padrão para a guia usando o comando "Editar Copiar" no Expression Blend. então eu apenas definir o raio de canto para a "fronteira" do cabeçalho do guia.

O problema com esta abordagem, no entanto, é que os "Editar Copiar" termina de comando gerando valores de cor literais para as escovas de gradiente usado para exibir os "activos" e "rato sobre" guia fundos.

Isso causa problemas quando o modo "contraste oi" está habilitado. Em vez de mudar para o esquema de cores de contraste oi, tal como os outros controlos, o separador com o modelo modificado irá utilizar os valores de cor literais especificados nas escovas de inclinação para as abas abas activas e de ratinho-over. Isso acaba tornando essas guias ilegível, porque o texto no cabeçalho do guia é alterado para "branco" quando o OS muda para modo de contraste oi (texto branco sobre um fundo cinza é ilegível).

Eu percebi que eu poderia ser capaz de mudar de volta para guias quadrados quando o modo de oi-contraste é habilitado, que iria resolver este problema particular. No entanto, eu imagino que haverá problemas semelhantes com os usuários que têm temas janelas personalizadas instalado.

Então, o que eu estou querendo saber é:

  1. Existe alguma maneira eu posso mudar os gradientes para apontar para os recursos do sistema, em vez de valores literais para que as cores serão atualizadas corretamente quando o modo de oi-contraste está habilitado
  2. Ou, se existe uma maneira para mim para definir o raio de canto na fronteira do cabeçalho guia sem criar um novo modelo de controle?

Editar:

Eu acho que deveria ser um pouco mais explícito sobre o que eu estou procurando. Eu quero um controle guia que se comporta exatamente como o controle de guia padrão, exceto que os cantos de cabeçalho guia são arredondados. Por padrão, um controle guia vai usar gradientes para a guia de fundo e vai "destacar" guias inativas quando o usuário mouses sobre elas. Ele também irá responder corretamente e alterá-lo de cores e é mouse sobre comportamento quando o OS muda para modo de contraste oi. Eu ainda preciso esse comportamento.

Criar uma cópia do modelo de controle padrão no Blend cria um modelo de controle que não funciona corretamente no modo de contraste oi. Eu quero saber o que eu preciso fazer para o modelo de controle, ou o código na minha janela, para obter esse modelo de controle gerado para funcionar corretamente no modo de oi-contraste.

Foi útil?

Solução

Não há nenhuma maneira de fazer cantos arredondados tabulação sem criar um modelo personalizado para TabItem. Fazendo o "Editar Copy" na mistura Acredito cria modelo padrão baseado no tema atual do Windows que você tem (posso estar errado no entanto. Eu acredito que wehn você fizer um depósito de ControlTemplate que obter o modelo de controle atual que é determinada pelo sistema tema. gosta em presentation.aero ou algo parecido). No entanto, se você quiser cores de abastecimento que o sistema irá usar quando as mudanças então sepcify-los como este em seu modelo:

Color="{DynamicResource {x:Static SystemColors.XXXX}"

Isto irá usar as cores do sistema ao estilo de controle e será atualizado para refletir as mudanças no tema do sistema.

Outras dicas

Adicionar um controle de estilo simples de sua janela no Blend. Isto irá adicionar o SimpleStyles.xaml, incluindo um para o controle guia.

Dê uma olhada no Family.Show e como o fazem os temas preto e prata.

Entre esses dois você deve ter um bom exemplo de como personalizar o controle de guia e lidar com temas diferentes.

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