Friday, June 11, 2010

How to make ListBoxItem stretch to width of ListBox

<ListBox x:Name="lstArticles" ItemsSource="{Binding}" VerticalAlignment="Top"
BorderThickness="0" SizeChanged="lstArticles_SizeChanged"
ScrollViewer.HorizontalScrollBarVisibility="Disabled" ScrollViewer.VerticalScrollBarVisibility="Auto" >
<ListBox.ItemTemplate>
<DataTemplate>
<Grid Loaded="Grid_Loaded">
<myCustomControl:ArticleEntry />
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>

private void lstArticles_SizeChanged(object sender, SizeChangedEventArgs e)
{
lstArticles.ItemTemplate = null;
lstArticles.ItemTemplate = dataTemplate;
}

private void Grid_Loaded(object sender, System.Windows.RoutedEventArgs e)
{
Grid vGrid = (Grid)sender;
if((Visibility)lstArticles.GetValue(ScrollViewer.ComputedVerticalScrollBarVisibilityProperty) == Visibility.Visible)
vGrid.Width = lstArticles.ActualWidth - 18;
else vGrid.Width = lstArticles.ActualWidth - 10;
}

No comments:

Post a Comment