2010-03-30 9 views
1

J'ai une matrice de fonctions implémentée avec Grid de Silverlight où les utilisateurs doivent sélectionner un produit. Comment puis-je indiquer une sélection avec un rectangle autour de toute la colonne sélectionnée?Comment puis-je afficher un rectangle de "mise en évidence de sélection" autour d'une colonne d'une grille Silverlight?

Il est facile de mettre un CheckBox au bas de la colonne de chaque produit, mais c'est trop terne. J'aurais preffered utiliser SL Boîte à outils DataGrid (avec sélection de ligne intégré), mais il ne peut pas être orienté verticalement pour une matrice de fonction ...

Merci, Carl

Répondre

1

Pour placer un tour de rectangle le contenu d'une colonne entière dans une grille Silverlight, placez simplement le rectangle comme dernier élément enfant dans la grille et affectez la propriété Grid.RowSpan au nombre de lignes de la grille et Grid.Column à la colonne que vous souhaitez mettre en surbrillance. E.g.:-

<Grid x:Name="LayoutRoot"> 
    <Grid.RowDefinitions> 
     <!-- Row Definitions (say 4 in this case)--> 
    </Grid.RowDefinitions> 
    <Grid.ColumnDefinitions> 
     <!-- Column definitions --> 
    </Grid.ColumnDefinitions> 

    <!-- Grid contents --> 

    <Rectangle Grid.RowSpan="4" Grid.Column="1" Stroke="Blue" StrokeThickness="1" /> 

</Grid> 

Cela dit, il semble être difficile de gérer un Grid pour afficher les données de quelque chose comme une matrice entraîné de produit. Vous déclarez qu'un DataGrid fonctionnerait pour vous s'il pouvait afficher des "lignes" horizontalement. Eh bien un ListBox peut être stylé de cette manière, c'est ce que j'avais été enclin à utiliser.

+0

Comment formeriez-vous un ListBox pour faire ceci? Les cellules matricielles peuvent contenir plusieurs lignes de texte et je n'ai pas trouvé de moyen d'aligner les hauteurs de cellules sans la grille. – carlmon

+0

@carlmon: Ah ok, je vois votre problème, avec difficulté;) Le bon niveau pour créer un tel contrôle serait de dériver de 'Selector' et de créer vos propres contrôles de panneau et de panneau personnalisés à afficher. Bien que ce soit une solution plus complète, c'est probablement beaucoup plus difficile que ce que vous faites déjà. – AnthonyWJones