Aqui está um grande número de recursos ocultos discutidos para vários idiomas. Agora estou curioso sobre alguns recursos ocultos do XAML e WPF?
Um que encontrei é o evento de clique no cabeçalho de um ListView
<ListView x:Name='lv'
Height="150"
GridViewColumnHeader.Click="GridViewColumnHeaderClickedHandler">
A propriedade GridViewColumnHeader.Click não está listada.
Alguns dos recursos relevantes até agora:
Veja também:
wpf
xaml
hidden-features
Sauron
fonte
fonte
Respostas:
Multibinding (combinado com StringFormat):
fonte
Há também o truque PresentationTraceSources.TraceLevel para depurar o que está acontecendo com as ligações em qualquer cenário específico. Tudo o que você precisa fazer é referenciar o espaço de nome System.Diagnostics no assembly WindowsBase
e adicione o seguinte à expressão de ligação:
O log será assim:
fonte
3.5sp1 introduziu TargetNullValue nas ligações. Isso definirá a propriedade vinculada como Nulo se o valor for inserido e se sua propriedade for Nula, ele exibirá esse valor.
fonte
3.5sp1 introduziu StringFormat em expressões de ligação, por exemplo
fonte
Text={Binding Date, StringFormat='{}{0:MM/dd/yyyy}'}"
Às vezes, você recebe uma string muito longa para ser exibida no rótulo. Nesse caso, podemos usar a
TextTrimming
propriedade deTextBlock
para mostrar elipsesLink MSDN
fonte
Adicionando efeito Aero à janela
fonte
Genéricos em XAML com x: TypeArguments
Se você quiser usar um ObservableCollection em XAML, precisará criar um tipo derivado de ObservableCollection, porque você não pode declará-lo em XAML. Com o XAML 2009, você pode usar o atributo x: TypeArguments para definir o tipo de um tipo genérico.
fonte
Mostrar dica de ferramenta em um controle desativado
O Wpf permite mostrar a dica de ferramenta em um controle, se estiver no estado desabilitado.
Por exemplo
fonte
Uso de construtores não padrão com argumentos x:
No XAML 2006, os objetos devem ter um construtor público padrão para usá-los. No XAML 2009, você pode transmitir argumentos do construtor usando a sintaxe x: Arguments.
fonte
Não é realmente um recurso oculto, mas com o WPF / XAML você recebe Bea Stollnitz e Josh Smith . Rainha e rei da programação WPF / XAML.
fonte
Extensões de marcação e propriedades anexadas são meus recursos favoritos, pois permitem estender o "vocabulário" XAML de uma maneira muito elegante.
Extensões de marcação
Propriedades anexadas
Origem para GridViewSort (btw, usa o
GridViewColumnHeader.Click
evento mencionado por Ortus)fonte
WinUtil.EnableAeroGlass
disponível em algum lugar?Você pode consultar tipos aninhados em XAML usando o sinal de mais (
+
). Por exemplo, se tivéssemos essa classe:Podemos nos referir
SomeValue
no XAML usando a seguinte sintaxe:Essa sintaxe não está documentada no MSDN e não é oficialmente suportada. Alguém perguntou sobre isso nos fóruns do MSDN e aparentemente isso quebra o WPF Designer do VS2010. Foi relatado no Microsoft Connect.
fonte
Compartilhamento de tamanho de grade ( aqui está um bom exemplo). Para encurtar a história, você pode ter colunas e linhas de grade compartilhando tamanhos, mesmo em diferentes grades. Isso será inestimável para todas as pessoas que estão usando DataGrids sem a necessidade de editar os dados no local.
fonte
PriorityBinding . Permite usar ligações assíncronas em uma ordem "primeiro a chegar, primeiro show":
fonte
Uso de métodos estáticos de fábrica com x: FactoryMethod
Quando você tem um tipo que não tem construtor público, mas um método estático de fábrica, você precisava criar esse tipo de código no XAML 2006. Com o XAML 2009, você pode usar o atributo x: FactoryMethodx: Arguments para passar os valores do argumento.
fonte
Propriedades avançadas de "legenda"
Outra coisa que não está muito clara é o conteúdo de algumas propriedades às quais estamos acostumados, que contém apenas texto. Se a propriedade de um elemento da GUI for do tipo Objeto, é muito provável que você possa, em vez de apenas definir o texto, adicionar um painel de sua necessidade que inclua um conjunto de controles.
Um exemplo disso é o MenuItem, onde a
Header
propriedade (que normalmente contém apenas texto) pode conter um conjunto de elementos da GUI agrupados em um controle de painel (ou apenas um elemento da GUI, se você precisar de apenas um).Observe também a
Icon
propriedade no MenuItem. Normalmente, ele contém um elemento Image, mas também pode conter qualquer coisa!fonte
Conversores XAML
A lista a seguir mostra conversores desenvolvidos pela comunidade WPF para converter diferentes formatos em XAML ou vice-versa.
Plug-in de exportação XAML do Adobe Illustrator
Conversor Adobe Photoshop para XAML
Plugin de Exportação XAML do Blender
Lightwave XAML Export Plugin
Exportação XAML do Visio
Conversor 3D Studio Max para XAML
Conversor Maya para XAML
Conversor Flash para XAML
Conversor SVG para XAML
Conversor WMF / EMF para XAML
fonte
Tipos incorporados
Se você deseja adicionar objetos de tipos simples, como string ou duplo, a um dicionário de recursos hoje, precisa mapear os espaços de nomes clr necessários para espaços de nomes XML. No XAML 2009, muitos tipos simples estão incluídos na linguagem XAML.
Os seguintes tipos estão incluídos no idioma XAML:
fonte
Referências fáceis a objetos com {x: Reference}
Se você deseja criar uma referência de objeto hoje, precisará fazer uma ligação de dados e declarar a fonte com um ElementName. No XAML 2009, você pode usar a nova extensão de marcação {x: Reference}
fonte
x:Reference
seja um recurso da linguagem XAML 2009, há alguns cenários em que ele também funcionará no XAML compilado. No entanto, ele não funciona em todos os lugares e pode interromper a exibição do designer XAML.Uso de cores do sistema
fonte
Suporte para chaves de dicionário arbitrário
No XAML 2006, todos os valores explícitos de x: Key foram tratados como cadeias. No XAML 2009, você pode definir qualquer tipo de chave que desejar, escrevendo a chave no ElementSyntax.
fonte
Definir um ValidationError por código
Um ValidatioRule em um BindingExpression é acionado apenas quando o lado de destino da ligação é alterado. Se você deseja definir um erro de validação por código, pode usar o seguinte snippet.
Defina o erro de validação
Limpe o erro de validação
fonte
A capacidade de agrupar UIElement (s) em um TextBlock
Eu não sei o quão útil (embora se qualifique como oculto) isso é ... mas com certeza me pegou de surpresa quando eu o encontrei :
Você pode argumentar que o seguinte xaml pode ser útil (por exemplo, colocar um gráfico no final de algum texto):
O xaml acima é renderizado da seguinte maneira:
fonte
Depurando animações
Erros comuns
Se você receber o seguinte erro: Não é possível animar '(0). (1)' em uma instância de objeto imutável. pode ser que você tenha uma das seguintes limitações:
fonte
Ligação sem INotifyPropertyChanged ou DependencyProperties
Conforme discutido aqui, você pode vincular uma propriedade simples do objeto CLR sem INotifyPropertyChanged e funcionará apenas .
Aqui está o fórum estou me referindo.
Citar:
Aqui está outro excelente e detalhado artigo sobre o assunto.
fonte