Border flou

cs_Cecile5 Messages postés 1 Date d'inscription mercredi 17 mars 2010 Statut Membre Dernière intervention 17 mars 2010 - 17 mars 2010 à 17:00
yohan49 Messages postés 380 Date d'inscription samedi 22 janvier 2005 Statut Membre Dernière intervention 13 août 2011 - 21 mars 2010 à 05:38
Bonjour à tous,

J'ai un petit soucis avec des Border qui ne se comportent pas comme je veux.

Voici ce qu'il faut faire pour reproduire mon problème :

1) Créer une classe Person :
public class Person
    {
        public string Nom { get; set; }
        public string Prenom { get; set; }
        public int Age { get; set; }
        public bool Present { get; set; }
    }


2) Créer une classe vue-modèle nommée ViewModel :
public class ViewModel
    {
        public ObservableCollection Persons { get; set; }
        
        public ViewModel()
        {
            Persons = new ObservableCollection();
            Persons.Add(new Person { Age 18, Nom "Nom 1", Prenom = "Prenom 1", Present = true });
            Persons.Add(new Person { Age 45, Nom "Nom 2", Prenom = "Prenom 2", Present = false });
            Persons.Add(new Person { Age 99, Nom "Nom 3", Prenom = "Prenom 3", Present = true });
            Persons.Add(new Person { Age 45, Nom "Nom 2", Prenom = "Prenom 2", Present = false });
            Persons.Add(new Person { Age 99, Nom "Nom 3", Prenom = "Prenom 3", Present = true });
            Persons.Add(new Person { Age 45, Nom "Nom 2", Prenom = "Prenom 2", Present = false });
            Persons.Add(new Person { Age 99, Nom "Nom 3", Prenom = "Prenom 3", Present = true });
            Persons.Add(new Person { Age 45, Nom "Nom 2", Prenom = "Prenom 2", Present = false });
            Persons.Add(new Person { Age 99, Nom "Nom 3", Prenom = "Prenom 3", Present = true });
            Persons.Add(new Person { Age 45, Nom "Nom 2", Prenom = "Prenom 2", Present = false });
            Persons.Add(new Person { Age 99, Nom "Nom 3", Prenom = "Prenom 3", Present = true });
        }
    }


3) Créer un UserControl pour la vue,
avec dans le xaml :

    

        <DataTemplate x:Key="DefaultTemplate">
            <StackPanel Orientation="Horizontal" Background="Beige" MinHeight="30">                
                
                    <TextBox VerticalAlignment="Center" Width="100" Margin="3,4,3,2" 
                             Text="{Binding Nom}" TextAlignment="Center" BorderThickness="0" 
                             Background="Beige" GotFocus="TextBoxGotFocus" LostFocus="TextBoxLostFocus" />
                
                
                    <TextBox VerticalAlignment="Center" Width="100" Margin="3,4,3,2"
                             Text="{Binding Prenom}" TextAlignment="Center" BorderThickness="0" 
                             Background="Beige" GotFocus="TextBoxGotFocus" LostFocus="TextBoxLostFocus" />
                
                
                    <TextBox VerticalAlignment="Center" Width="100" Margin="3,4,3,2"
                             Text="{Binding Age}" TextAlignment="Center" BorderThickness="0" 
                             Background="Beige" GotFocus="TextBoxGotFocus" LostFocus="TextBoxLostFocus" />
                
                
                    <CheckBox IsChecked="{Binding Path=Present}" HorizontalAlignment="Center" 
                              VerticalAlignment="Center" GotFocus="CheckBoxGotFocus" LostFocus="CheckBoxLostFocus" />
                
            </StackPanel>
        </DataTemplate>

    
    
    <Grid>
        <ListBox ItemsSource="{Binding Persons}" 
                 ItemTemplate="{StaticResource DefaultTemplate}"                 
                 HorizontalAlignment="Center"
                 VerticalContentAlignment="Center"                  
                 Margin="10"/>
    </Grid>


et dans le xaml.cs :
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;

namespace WpfApplication1
{
    public partial class View
    {
        public View()
        {
            InitializeComponent();
            DataContext = new ViewModel();
        }

        private void TextBoxGotFocus(object sender, RoutedEventArgs e)
        {
            var textbox = (TextBox)sender;
            textbox.Background = Brushes.White;
            var border = ((Border)textbox.Parent);
            border.Background = Brushes.White;
        }

        private void TextBoxLostFocus(object sender, RoutedEventArgs e)
        {
            var textbox = (TextBox)sender;
            textbox.Background = Brushes.Beige;
            var border = ((Border)textbox.Parent);
            border.Background = Brushes.Beige;
        }

        private void CheckBoxGotFocus(object sender, RoutedEventArgs e)
        {
            var border = ((Border)((CheckBox)sender).Parent);
            border.Background = Brushes.White;
        }

        private void CheckBoxLostFocus(object sender, RoutedEventArgs e)
        {
            var border = ((Border)((CheckBox)sender).Parent);
            border.Background = Brushes.Beige;
        }
    }
}


Les problèmes sont les suivants :
a) à l'exécution, certaines lignes du tableau sont floues.
b) quand on clique sur une cellule, sa bordure s'amenuise.

Quelqu'un a-t-il une idée de pourquoi ça fait cela? Et surtout comment y remédier?

Merci.

1 réponse

yohan49 Messages postés 380 Date d'inscription samedi 22 janvier 2005 Statut Membre Dernière intervention 13 août 2011 8
21 mars 2010 à 05:38
salut , essais d'invalider ta form
0