IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Silverlight Discussion :

Datafield label bug?


Sujet :

Silverlight

  1. #1
    Membre Expert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2009
    Messages
    2 056
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2009
    Messages : 2 056
    Par défaut Datafield label bug?
    Bonjour,
    je viens de tomber sur un cas bizzare avec le datafield du toolkit utilisé dans un dataform.

    Je souhaite utiliser un label, mais plutôt que de le définir directement dans la balise comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <toolkit:datafield Label="helloLabel">
    je souhaite l'utiliser comme cela:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <toolkit:DataField>
                  <toolkit:DataField.Label>
                        <TextBlock>HelloLabel</TextBlock>
                  </toolkit:DataField.Label>
    </toolkit:DataField>
    (Noté qu'ici il n'y a pas d'interet, mais si je souhaite changer la couleur du texte, ou le formaté sur plusieurs ligne avec <run> et <linebreak>....)

    Ca fonctionne jusqu'au moment ou l'on passe le dataform en mode edition (grace au petit crayon).
    La Application_UnhandledException de mon app.xaml.cs se réveille!
    Est-ce un bug du datafield, ou tout simplement je ne l'utilise pas de la bonne facon?

    Merci!

  2. #2
    Membre éprouvé
    Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2009
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Septembre 2009
    Messages : 99
    Par défaut
    Bonjour,

    Peux-tu nous donner plus d'informations sur l'exception levée ?

  3. #3
    Membre Expert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2009
    Messages
    2 056
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2009
    Messages : 2 056
    Par défaut
    C'est une unhandledException dont le e.ExceptionObject est un argumentException:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    e.ExceptionObject
    {System.ArgumentException: La valeur n'est pas comprise dans la plage attendue.
       à MS.Internal.XcpImports.CheckHResult(UInt32 hr)
       à MS.Internal.XcpImports.SetValue(IManagedPeerBase obj, DependencyProperty property, DependencyObject doh)
       à MS.Internal.XcpImports.SetValue(IManagedPeerBase doh, DependencyProperty property, Object obj)
       à System.Windows.DependencyObject.SetObjectValueToCore(DependencyProperty dp, Object value)
       à System.Windows.DependencyObject.SetEffectiveValue(DependencyProperty property, EffectiveValueEntry& newEntry, Object newValue)
       à System.Windows.DependencyObject.UpdateEffectiveValue(DependencyProperty property, EffectiveValueEntry oldEntry, EffectiveValueEntry& newEntry, ValueOperation operation)
       à System.Windows.DependencyObject.SetValueInternal(DependencyProperty dp, Object value, Boolean allowReadOnlySet)
       à System.Windows.Controls.ContentControl.set_Content(Object value)
       à System.Windows.Controls.DataField.SetLabelContent()
       à System.Windows.Controls.DataField.GenerateUI()
       à System.Windows.Controls.DataField.OnDataFormModePropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
       à System.Windows.DependencyObject.RaisePropertyChangeNotifications(DependencyProperty dp, Object oldValue, Object newValue)
       à System.Windows.DependencyObject.UpdateEffectiveValue(DependencyProperty property, EffectiveValueEntry oldEntry, EffectiveValueEntry& newEntry, ValueOperation operation)
       à System.Windows.DependencyObject.RefreshExpression(DependencyProperty dp)
       à System.Windows.Data.BindingExpression.SendDataToTarget()
       à System.Windows.Data.BindingExpression.SourcePropertyChanged(PropertyPathListener sender, PropertyPathChangedEventArgs args)
       à System.Windows.PropertyPathListener.RaisePropertyPathStepChanged(PropertyPathStep source)
       à System.Windows.PropertyAccessPathStep.RaisePropertyPathStepChanged(PropertyListener source)
       à System.Windows.DependencyPropertyListener.SourcePropertyChanged(DependencyObject sender, DependencyProperty dp)
       à System.Windows.Data.WeakDependencyPropertyChangedListener.SourcePropertyChanged(DependencyObject sender, DependencyProperty dp)
       à System.Windows.DPChangedEventHandler.Invoke(DependencyObject sender, DependencyProperty dp)
       à System.Windows.DependencyObject.OnPropertyChanged(DependencyProperty dp)
       à System.Windows.FrameworkElement.OnPropertyChanged(DependencyProperty dp)
       à System.Windows.DependencyObject.RaisePropertyChangeNotifications(DependencyProperty dp, Object oldValue, Object newValue)
       à System.Windows.DependencyObject.UpdateEffectiveValue(DependencyProperty property, EffectiveValueEntry oldEntry, EffectiveValueEntry& newEntry, ValueOperation operation)
       à System.Windows.DependencyObject.SetValueInternal(DependencyProperty dp, Object value, Boolean allowReadOnlySet)
       à System.Windows.DependencyObject.SetValue(DependencyProperty dp, Object value)
       à System.Windows.Controls.DataForm.set_Mode(DataFormMode value)
       à System.Windows.Controls.DataForm.SetMode()
       à System.Windows.Controls.DataForm.set_IsEditing(Boolean value)
       à System.Windows.Controls.DataForm.BeginEdit(Boolean startingNewEdit)
       à System.Windows.Controls.DataForm.BeginEdit()
       à System.Windows.Controls.DataForm.OnBeginEditButtonClick(Object sender, RoutedEventArgs e)
       à System.Windows.Controls.Primitives.ButtonBase.OnClick()
       à System.Windows.Controls.Button.OnClick()
       à System.Windows.Controls.Primitives.ButtonBase.OnMouseLeftButtonUp(MouseButtonEventArgs e)
       à System.Windows.Controls.Control.OnMouseLeftButtonUp(Control ctrl, EventArgs e)
       à MS.Internal.JoltHelper.FireEvent(IntPtr unmanagedObj, IntPtr unmanagedObjArgs, Int32 argsTypeIndex, Int32 actualArgsTypeIndex, String eventName)}
        [System.ArgumentException]: {System.ArgumentException: La valeur n'est pas comprise dans la plage attendue.
       à MS.Internal.XcpImports.CheckHResult(UInt32 hr)
       à MS.Internal.XcpImports.SetValue(IManagedPeerBase obj, DependencyProperty property, DependencyObject doh)
       à MS.Internal.XcpImports.SetValue(IManagedPeerBase doh, DependencyProperty property, Object obj)
       à System.Windows.DependencyObject.SetObjectValueToCore(DependencyProperty dp, Object value)
       à System.Windows.DependencyObject.SetEffectiveValue(DependencyProperty property, EffectiveValueEntry& newEntry, Object newValue)
       à System.Windows.DependencyObject.UpdateEffectiveValue(DependencyProperty property, EffectiveValueEntry oldEntry, EffectiveValueEntry& newEntry, ValueOperation operation)
       à System.Windows.DependencyObject.SetValueInternal(DependencyProperty dp, Object value, Boolean allowReadOnlySet)
       à System.Windows.Controls.ContentControl.set_Content(Object value)
       à System.Windows.Controls.DataField.SetLabelContent()
       à System.Windows.Controls.DataField.GenerateUI()
       à System.Windows.Controls.DataField.OnDataFormModePropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
       à System.Windows.DependencyObject.RaisePropertyChangeNotifications(DependencyProperty dp, Object oldValue, Object newValue)
       à System.Windows.DependencyObject.UpdateEffectiveValue(DependencyProperty property, EffectiveValueEntry oldEntry, EffectiveValueEntry& newEntry, ValueOperation operation)
       à System.Windows.DependencyObject.RefreshExpression(DependencyProperty dp)
       à System.Windows.Data.BindingExpression.SendDataToTarget()
       à System.Windows.Data.BindingExpression.SourcePropertyChanged(PropertyPathListener sender, PropertyPathChangedEventArgs args)
       à System.Windows.PropertyPathListener.RaisePropertyPathStepChanged(PropertyPathStep source)
       à System.Windows.PropertyAccessPathStep.RaisePropertyPathStepChanged(PropertyListener source)
       à System.Windows.DependencyPropertyListener.SourcePropertyChanged(DependencyObject sender, DependencyProperty dp)
       à System.Windows.Data.WeakDependencyPropertyChangedListener.SourcePropertyChanged(DependencyObject sender, DependencyProperty dp)
       à System.Windows.DPChangedEventHandler.Invoke(DependencyObject sender, DependencyProperty dp)
       à System.Windows.DependencyObject.OnPropertyChanged(DependencyProperty dp)
       à System.Windows.FrameworkElement.OnPropertyChanged(DependencyProperty dp)
       à System.Windows.DependencyObject.RaisePropertyChangeNotifications(DependencyProperty dp, Object oldValue, Object newValue)
       à System.Windows.DependencyObject.UpdateEffectiveValue(DependencyProperty property, EffectiveValueEntry oldEntry, EffectiveValueEntry& newEntry, ValueOperation operation)
       à System.Windows.DependencyObject.SetValueInternal(DependencyProperty dp, Object value, Boolean allowReadOnlySet)
       à System.Windows.DependencyObject.SetValue(DependencyProperty dp, Object value)
       à System.Windows.Controls.DataForm.set_Mode(DataFormMode value)
       à System.Windows.Controls.DataForm.SetMode()
       à System.Windows.Controls.DataForm.set_IsEditing(Boolean value)
       à System.Windows.Controls.DataForm.BeginEdit(Boolean startingNewEdit)
       à System.Windows.Controls.DataForm.BeginEdit()
       à System.Windows.Controls.DataForm.OnBeginEditButtonClick(Object sender, RoutedEventArgs e)
       à System.Windows.Controls.Primitives.ButtonBase.OnClick()
       à System.Windows.Controls.Button.OnClick()
       à System.Windows.Controls.Primitives.ButtonBase.OnMouseLeftButtonUp(MouseButtonEventArgs e)
       à System.Windows.Controls.Control.OnMouseLeftButtonUp(Control ctrl, EventArgs e)
       à MS.Internal.JoltHelper.FireEvent(IntPtr unmanagedObj, IntPtr unmanagedObjArgs, Int32 argsTypeIndex, Int32 actualArgsTypeIndex, String eventName)}
        Data: {System.Collections.ListDictionaryInternal}
        InnerException: null
        Message: "La valeur n'est pas comprise dans la plage attendue."
        StackTrace: "   à MS.Internal.XcpImports.CheckHResult(UInt32 hr)\r\n   à MS.Internal.XcpImports.SetValue(IManagedPeerBase obj, DependencyProperty property, DependencyObject doh)\r\n   à MS.Internal.XcpImports.SetValue(IManagedPeerBase doh, DependencyProperty property, Object obj)\r\n   à System.Windows.DependencyObject.SetObjectValueToCore(DependencyProperty dp, Object value)\r\n   à System.Windows.DependencyObject.SetEffectiveValue(DependencyProperty property, EffectiveValueEntry& newEntry, Object newValue)\r\n   à System.Windows.DependencyObject.UpdateEffectiveValue(DependencyProperty property, EffectiveValueEntry oldEntry, EffectiveValueEntry& newEntry, ValueOperation operation)\r\n   à System.Windows.DependencyObject.SetValueInternal(DependencyProperty dp, Object value, Boolean allowReadOnlySet)\r\n   à System.Windows.Controls.ContentControl.set_Content(Object value)\r\n   à System.Windows.Controls.DataField.SetLabelContent()\r\n   à System.Windows.Controls.DataField.GenerateUI()\r\n   à System.Windows
    .Controls.DataField.OnDataFormModePropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)\r\n   à System.Windows.DependencyObject.RaisePropertyChangeNotifications(DependencyProperty dp, Object oldValue, Object newValue)\r\n   à System.Windows.DependencyObject.UpdateEffectiveValue(DependencyProperty property, EffectiveValueEntry oldEntry, EffectiveValueEntry& newEntry, ValueOperation operation)\r\n   à System.Windows.DependencyObject.RefreshExpression(DependencyProperty dp)\r\n   à System.Windows.Data.BindingExpression.SendDataToTarget()\r\n   à System.Windows.Data.BindingExpression.SourcePropertyChanged(PropertyPathListener sender, PropertyPathChangedEventArgs args)\r\n   à System.Windows.PropertyPathListener.RaisePropertyPathStepChanged(PropertyPathStep source)\r\n   à System.Windows.PropertyAccessPathStep.RaisePropertyPathStepChanged(PropertyListener source)\r\n   à System.Windows.DependencyPropertyListener.SourcePropertyChanged(DependencyObject sender, DependencyProperty dp)\r\n   à System
    .Windows.Data.WeakDependencyPropertyChangedListener.SourcePropertyChanged(DependencyObject sender, DependencyProperty dp)\r\n   à System.Windows.DPChangedEventHandler.Invoke(DependencyObject sender, DependencyProperty dp)\r\n   à System.Windows.DependencyObject.OnPropertyChanged(DependencyProperty dp)\r\n   à System.Windows.FrameworkElement.OnPropertyChanged(DependencyProperty dp)\r\n   à System.Windows.DependencyObject.RaisePropertyChangeNotifications(DependencyProperty dp, Object oldValue, Object newValue)\r\n   à System.Windows.DependencyObject.UpdateEffectiveValue(DependencyProperty property, EffectiveValueEntry oldEntry, EffectiveValueEntry& newEntry, ValueOperation operation)\r\n   à System.Windows.DependencyObject.SetValueInternal(DependencyProperty dp, Object value, Boolean allowReadOnlySet)\r\n   à System.Windows.DependencyObject.SetValue(DependencyProperty dp, Object value)\r\n   à System.Windows.Controls.DataForm.set_Mode(DataFormMode value)\r\n   à System.Windows.Controls.DataForm.SetMode()\r\n   à
     System.Windows.Controls.DataForm.set_IsEditing(Boolean value)\r\n   à System.Windows.Controls.DataForm.BeginEdit(Boolean startingNewEdit)\r\n   à System.Windows.Controls.DataForm.BeginEdit()\r\n   à System.Windows.Controls.DataForm.OnBeginEditButtonClick(Object sender, RoutedEventArgs e)\r\n   à System.Windows.Controls.Primitives.ButtonBase.OnClick()\r\n   à System.Windows.Controls.Button.OnClick()\r\n   à System.Windows.Controls.Primitives.ButtonBase.OnMouseLeftButtonUp(MouseButtonEventArgs e)\r\n   à System.Windows.Controls.Control.OnMouseLeftButtonUp(Control ctrl, EventArgs e)\r\n   à MS.Internal.JoltHelper.FireEvent(IntPtr unmanagedObj, IntPtr unmanagedObjArgs, Int32 argsTypeIndex, Int32 actualArgsTypeIndex, String eventName)"
    Mais le mieux c'est de tester je crois
    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    public partial class MainPage : UserControl
        {
            public MainPage()
            {
                InitializeComponent();
     
                dataForm1.ItemsSource = new List<Test> { new Test { Prenom = "georges", Nom = "harry" } ,
                new Test{Prenom="dz",Nom="harry"},
                new Test{Prenom="gedzefeorges",Nom="hfefdy"},
                new Test{Prenom="gagerergerges",Nom="fe"}};
     
                dataForm1.ReadOnlyTemplate = Resources["NormalTemplate"] as DataTemplate;
                dataForm1.EditTemplate = Resources["NormalTemplate"] as DataTemplate;
            }
        }
     
        public class Test
        {
     
            public string Nom { get; set; }
            public string Prenom { get; set; }
        }
    Code xaml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    <UserControl x:Class="testDatafieldLabel.MainPage"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        mc:Ignorable="d"
        d:DesignHeight="300" d:DesignWidth="400" xmlns:toolkit="http://schemas.microsoft.com/winfx/2006/xaml/presentation/toolkit">
        <UserControl.Resources>
            <DataTemplate x:Key="NormalTemplate">
            <StackPanel>
     
                <toolkit:DataField>
                        <toolkit:DataField.Label>
                            <TextBlock>Hello</TextBlock>
                        </toolkit:DataField.Label>
                            <TextBox Text="{Binding Nom}" Background="Red"/>
                </toolkit:DataField>
     
                <toolkit:DataField>
                    <TextBox Text="{Binding Prenom}"/>
                </toolkit:DataField>
            </StackPanel>
        </DataTemplate>
        </UserControl.Resources>
     
        <Grid x:Name="LayoutRoot" Background="White">
            <toolkit:DataForm Height="162" HorizontalAlignment="Left" Margin="133,94,0,0" Name="dataForm1" VerticalAlignment="Top" Width="200" AutoEdit="False">
     
            </toolkit:DataForm>
        </Grid>
    </UserControl>

  4. #4
    Membre éprouvé
    Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2009
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Septembre 2009
    Messages : 99
    Par défaut
    Dans la trace de l'erreur on peut voir :
    "La valeur n'est pas comprise dans la plage attendue."
    ... ça me parait une bonne piste de réflexion, non ?

  5. #5
    Membre Expert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2009
    Messages
    2 056
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2009
    Messages : 2 056
    Par défaut
    Ben si ca ne fonctionnait pas en mode "readonly"...mais la ca fonctionne -_-.
    Comme si le xaml n'etait pas interpreté de la meme facon dans les 2 modes

Discussions similaires

  1. Bug - Label qui écrit par-dessus
    Par tiny_linux dans le forum Cpcdos
    Réponses: 2
    Dernier message: 17/11/2014, 10h11
  2. [XL-2010] recuper valeur label + bug sur texbox
    Par pilounet54 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 04/05/2012, 15h52
  3. Bug IE6 avec label : petites div redimensionnées
    Par pacpacapero dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 15/12/2007, 11h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo