Hi,
I have a user control that is essentially a listbox.
The listbox is bound to a list of objects.
I am using an ItemTemplateSelector to control how each item is displayed.
In one template I am using a Hyperlink.
My problem is as follows:
Whenever I click the hyperlink the listbox's items collection seems to be emptied out.
I can still see the listbox items but if I query myListBox.Items.Count I always get 0.
Is there a reason this should happen?
Thanks,
dlarkin77
This is the DataTemplate that I am using:
This is how I fill the listbox:Code:<DataTemplate x:Key="NonEPOSCall"> <Grid Margin="0" Background="White"> <Border Margin="5" BorderThickness="1" BorderBrush="SteelBlue" Background="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type ListBoxItem}}, Path=Background}" CornerRadius="4"> <Grid Margin="3" Style="{StaticResource GridStyle}"> <Grid.ColumnDefinitions> <ColumnDefinition Width="Auto"></ColumnDefinition> <ColumnDefinition Width="*"></ColumnDefinition> </Grid.ColumnDefinitions> <Grid Grid.Column="1" HorizontalAlignment="Left" ShowGridLines="False"> <Grid.RowDefinitions> <RowDefinition></RowDefinition> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition SharedSizeGroup="FirstColumn"></ColumnDefinition> <ColumnDefinition SharedSizeGroup="SecondColumn"></ColumnDefinition> </Grid.ColumnDefinitions> <StackPanel Grid.Row="0" Grid.Column="0" Orientation="Horizontal" VerticalAlignment="Center"> <TextBlock Text="Account Number:" Margin="3"></TextBlock> <TextBlock FontWeight="Bold" Margin="3" Text="{Binding Path=AccountNumber}"></TextBlock> </StackPanel> <StackPanel Grid.Row="0" Grid.Column="1" Orientation="Horizontal" VerticalAlignment="Center"> <TextBlock Margin="100,3,3,3"> <Hyperlink Style="{StaticResource HyperlinkStyle}" Click="Hyperlink_Click"> Next Call Date: </Hyperlink> </TextBlock> <TextBlock FontWeight="Bold" Tag="tbNextCallDate" Margin="20,3,3,3" Text="{Binding Path=NextCallDate}" VerticalAlignment="Center"></TextBlock> </StackPanel> </Grid> </Grid> </Border> </Grid> </DataTemplate>
Edit: I've attached a sample application showing the behaviour inquestion. You'll need VS 2008 to open itCode:List<CallListItem> items = new List<CallListItem> { new CallListItem { AccountNumber = "456", EPOS = false }, new CallListItem { AccountNumber = "789", EPOS = false } }; // callListBox1 is the user control // lstCalls is the name of the listbox in callListBox1 callListBox1.lstCalls.ItemsSource = items;


Reply With Quote
Bookmarks