Pular para o conteúdo principal

Clique direito em Datagrid (Silverlight)

Uma das coisas mais frustrantes no Silverlight com toda certeza é ver aquela "caixinha" com informações quando clicamos com o botão direito, porque quando executamos essa ação estamos, na maioria das vezes, buscando novas funcionalidades ou informações que dizem respeito ao que estamos vendo naquele momento, mas esse comportamento original pode ser alterado para nossa alegria.

No exemplo a seguir iremos apresentar um menu de contexto codificando o evento "MouseRightButtonDown" do DataGrid:

     
    
        xmlns:grid="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data"
        xmlns:toolkit="http://schemas.microsoft.com/winfx/2006/xaml/presentation/toolkit" >

        < grid :DataGrid MouseRightButtonDown="_grid_MouseRightButtonDown" >
            
            < toolkit:ContextMenuService.ContextMenu >
                < toolkit:ContextMenu>
                    < toolkit:MenuItem Header="Action!" / >
                < / toolkit:ContextMenu >
            < / toolkit:ContextMenuService.ContextMenu >
        < / grid:DataGrid >
    < / UserControl >


    // Classe C#
    private void _grid_MouseRightButtonDown(object sender, MouseButtonEventArgs e)
    {
        IEnumerable elementsUnderMouse =
            VisualTreeHelper
                .FindElementsInHostCoordinates(e.GetPosition(null), this);
        DataGridRow row =
            elementsUnderMouse
                .Where(uie => uie is DataGridRow)
                .Cast()
                .FirstOrDefault();
        if (row != null)
            _grid.SelectedItem = row.DataContext;
    }



Fonte:
msdn
Silverlight

Comentários

Mais visitadas

Manipular arquivos com PL/SQL (Oracle)

O bom e velho arquivo, é impressionante como lidamos com seus vários tipos durante todos os dias, bom hoje vamos mostrar um jeito simples de se escrever e ler arquivos apenas com a codificação nativa do Oracle. A primeira coisa a fazer é criar um diretório válido configurado no Oracle, e permissões de acesso a esse diretório para o usuário de banco onde faremos o exemplo, sendo assim suponhamos que nosso usuário de banco se chame programero, e nosso diretório real esteja em c:\programero, então logado como SYSTEM devemos executar os seguintes comandos: 1: -- cria diretorio 2: create or replace directory DIR_PROGRAMERO as ' C:\PROGRAMERO '; 3: -- concede permissão de escrita e leitura para nosso usuário 4: grant read , write on directory DIR_PROGRAMERO to PROGRAMERO; Para escrever, basicamente precisamos apenas saber onde esse arquivo ficará, no nosso caso no diretório criado acima, segue o código de escrita: 1: declare 2: -- nosso handler 3: v_a...

Centralizar Texto em Edit

Como todos sabemos o Edit mantém todo texto digitado a esquerda, o que não fica bem quando o usamos para a entrada de números, pois bem, o exemplo abaixo apresenta uma alternativa para centralizar um determinado valor dentro de um Edit: procedure EditChange(Sender: TObject); var vl_label : TLabel; //variável do tipo Label begin vl_label := TLabel.Create(self); //criamos um label WITH vl_label DO BEGIN Font.Name := TEdit(sender).Font.Name; //pegamos a fonte usada no edit Caption := TEdit(sender).Text; //pegamos o conteúdo do edit SendMessage(TEdit(sender).Handle, EM_SETMARGINS, EC_LEFTMARGIN, (TEdit(sender).Width-vl_label.Width) div 2); //centraliza no label e retorna para o edit END ; vl_label.Free; end ;

Funções de Data e Hora (Delphi)

É muito comum nos depararmos no dia a dia com a necessidade de manipular datas e horas, seja para um calculo de permanência, dias de atraso enfim, é praticamente escapar de alguma situação que necessite desse tipo de controle. Assim como a necessidade e se utilizar algum recurso para manipular as datas e horas de alguma maneira e freqüente, as duvidas de como o faze-lo também é, basta um breve olhar em qualquer fórum especializado e lá está, alguma duvida relacionada, por isso decidi falar um pouco sobre uma unit muito poderosa chamada DateUtils para a manipulação de data e hora, com um grande numero de métodos e classes que facilitam a vida de qualquer um. Alguns exemplos: CompareDate(constA, B: TDateTime): TValueRelationship; Compara apenas a data de dois valores (do tipo TDateTime) retornando: LessThanValue O primeiro valor é menor que o segundo EqualsValue Os valores são iguais GreaterThanValue O primeiro valor é maior que o segundo CompareDateTime(const A, B: TD...