Collection d'éléments doit être vide avant d'utiliser ItemsSource en Silverlight
À l'intérieur de contrôle personnalisé, je suis en train de lier mon ItemsControl.ItemsSource et obtenez l'erreur. Voici comment le modèle de l'air:
<Style TargetType="controls:IdattFilterBox">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="controls:IdattFilterBox">
<ScrollViewer HorizontalScrollBarVisibility="Hidden" VerticalScrollBarVisibility="Auto">
<ItemsControl x:Name="PART_ItemsControl">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid HorizontalAlignment="Stretch">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding Caption}" />
<ComboBox Grid.Column="1">
<ComboBoxItem Content="Contains" />
<ComboBoxItem Content="Begins with" />
<ComboBoxItem Content="Ends with" />
</ComboBox>
<TextBox Grid.Column="2" Text="{Binding FieldFilter1, Mode=TwoWay}" />
<TextBox Grid.Column="3" Text="{Binding FieldFilter2, Mode=TwoWay}" />
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
<Border Grid.ColumnSpan="2" x:Name="ValidationErrorElement" BorderBrush="#FFDB000C" BorderThickness="1" CornerRadius="1" Visibility="Collapsed">
<ToolTipService.ToolTip>
<ToolTip x:Name="validationTooltip" DataContext="{Binding RelativeSource={RelativeSource TemplatedParent}}" Placement="Right" PlacementTarget="{Binding RelativeSource={RelativeSource TemplatedParent}}" Template="{StaticResource ValidationToolTipTemplate}">
<ToolTip.Triggers>
<EventTrigger RoutedEvent="Canvas.Loaded">
<BeginStoryboard>
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="IsHitTestVisible" Storyboard.TargetName="validationTooltip">
<DiscreteObjectKeyFrame KeyTime="0">
<DiscreteObjectKeyFrame.Value>
<System:Boolean>true</System:Boolean>
</DiscreteObjectKeyFrame.Value>
</DiscreteObjectKeyFrame>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</ToolTip.Triggers>
</ToolTip>
</ToolTipService.ToolTip>
<Grid Background="Transparent" HorizontalAlignment="Right" Height="12" Margin="1,-4,-4,0" VerticalAlignment="Top" Width="12">
<Path Data="M 1,0 L6,0 A 2,2 90 0 1 8,2 L8,7 z" Fill="#FFDC000C" Margin="1,3,0,0"/>
<Path Data="M 0,0 L2,0 L 8,6 L8,8" Fill="#ffffff" Margin="1,3,0,0"/>
</Grid>
</Border>
</ItemsControl>
</ScrollViewer>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
Dans le code, j'ai essayer de mettre cette PARTIE du ItemSource:
this.WrapperItemsControl.ItemsSource = filterData;
Sur cette ligne, j'obtiens l'erreur(message d'erreur dans le sujet). Pourquoi ne puis-je pas mis ItemsSource et que cette erreur signifie? Je veux contrôles dans DataTemplate pour se lier à des objets stockés dans filterData
.
EDIT:
PART_ItemsControl est ce que mon WrapperItemsControl
this.WrapperItemsControl = GetTemplateChild(PartItemsControl) as ItemsControl;
EDIT2:
Capture d'écran montrant qu'il existe un élément (Border?) D'où vient-elle?!
EDIT3
DOH! J'ai placé la validation de la frontière dans un mauvais endroit
Pouvez-vous montrer le XAML de la WrapperItemsControl, et dites-nous quelle est l'erreur réelle?
OriginalL'auteur katit | 2011-11-03
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas utiliser ItemsSource si vous avez manuellement ajouter des éléments à votre ItemsControl. Par exemple, vous obtenez un message d'erreur si vous avez essayé ceci:
Vous pouvez penser que vous ne faites pas cela, mais vous êtes réellement. Vous êtes en train d'ajouter un seul élément de votre ItemsControl, et cet élément est de type DataTemplate. Look:
Que la syntaxe signifie "créer un DataTemplate, et l'ajouter à la ItemsControl, des Objets de propriété". (Articles est la propriété par défaut pour ItemsControl, de sorte que tous les éléments que vous créez dans la ItemsControl, si vous n'avez pas de spécifier, il ajoute des Éléments.)
Je pense que vous l'intention d'attribuer DataTemplate pour le ItemsControl de la propriété ItemTemplate, plutôt que d'ajouter des Éléments. Essayez plutôt ceci:
Eh bien, oui. Vous étiez tout à fait raison. D'une certaine manière, j'ai placé la validation du modèle à l'intérieur de ItemsControl
"Vous pouvez penser que vous ne faites pas cela, mais vous êtes réellement" Bien écrit. Merci.
C'est ce que je cherchais!!!!!
OriginalL'auteur Joe White