2011-02-01 54 views
0

我开发了一个用户控件,它有ListBox。当我们滚动它不会发生在我身上你能告诉我什么会出错吗?在Usercontrol中滚动

我有以下项目,

1.Panorama页 在端控件:PanoramaItem我创建usecontrol

<controls:PanoramaItem Header ="Header"> 
    <Grid> 
     <views:MyUserControlView DataContext="{Binding MyViewModel}" /> 
    </Grid> 
</controls:PanoramaItem> 

2.MyUserControlView

<UserControl x:Class="UI.Views.RecentFileView" 
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" 
xmlns:utility="clr-namespace:UI.CommandBehaviours" 

mc:Ignorable="d" 
FontFamily="{StaticResource PhoneFontFamilyNormal}" 
FontSize="{StaticResource PhoneFontSizeNormal}" 
Foreground="{StaticResource PhoneForegroundBrush}" 
d:DesignHeight="364" d:DesignWidth="245"> 

<Grid x:Name="LayoutRoot" Height="360"> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="Auto" /> 
    </Grid.RowDefinitions> 
    <ScrollViewer VerticalScrollBarVisibility="Auto"> 
     <ListBox x:Name="RecentFilesListBox" Grid.Row="0" ItemsSource="{Binding RecentFiles}" 
       utility:CommandService.Command="{Binding ToFileViewCommand}" utility:CommandService.CommandParameter="{Binding SelectedItem, ElementName=RecentFilesListBox}" > 
      <ListBox.ItemTemplate> 
       <DataTemplate> 
        <StackPanel x:Name="DataTemplateStackPanel" Orientation="Horizontal"> 
        <Image x:Name="ThumbnailImage" Source="{Binding Path=Thumbnail}" Height="43" Width="43" VerticalAlignment="Top" Margin="10,0,20,0"/> 
         <StackPanel> 
          <TextBlock x:Name="FileNameTextBlock" Text="{Binding Path=FileName, Mode=OneWay}" Style="{StaticResource PhoneTextExtraLargeStyle}"/> 
          <TextBlock x:Name="FileserverNameTextBlock" Text="{Binding Path=FileServerName}" Style="{StaticResource PhoneTextSubtleStyle}"/> 
         </StackPanel> 
        </StackPanel> 
       </DataTemplate> 
      </ListBox.ItemTemplate> 
     </ListBox> 
    </ScrollViewer> 
</Grid> 

实例

当我滚动它不工作fo [R我..

+0

你能提供XAML标记?以及有关此ListBox中的内容的一些信息? – ColinE 2011-02-01 13:28:33

+0

是的,我已经给出了.. – dinesh 2011-02-01 13:36:09

+1

你的问题没有格式化,以显示smaple XAML。我现在重新格式化了它。 – 2011-02-01 13:41:10

回答

2

假设你的意思是垂直滚动,那么你已经所示的结构应该工作正常 - 尽管我有点担心,其中<ListBox>是在你的<UserControl>

这里有两件事情,应工作:

选项1:

<Panorama> 
<PanoramaItem> 
<MyUserControl> 
</PanoramaItem> 
</Panorama> 

其中的MyUserControl是:

<UserControl> 
<ScrollViewer> 
<StackPanel> 
... lots of <TextBlock>s 
</StackPanel> 
</ScrollViewer> 
</UserControl> 

或...

选项2

<Panorama> 
<PanoramaItem> 
<MyUserControl> 
</PanoramaItem> 
</Panorama> 

其中的MyUserControl是:

<UserControl> 
<ListBox> 
... lots of "items" possibly created inside a <DataTemplate> 
<ListBox> 
</UserControl> 

如果你想要把项目的列表的ScrollViewer内,然后您最好使用ItemsControl来代替。

1

您为您的usercontrol发布的XAML无效(它包含一个额外的</StackPanel>),并且拥有比您应该需要更多的网格。

试试这个:

<ListBox x:Name="MyListBox" ItemsSource="{Binding MyProperty}"> 
    <ListBox.ItemTemplate> 
    <DataTemplate> 
     <StackPanel Orientation="Horizontal"> 
     <Image x:Name="MyImage" Source="{Binding MyImageSource}" VerticalAlignment="Center" HorizontalAlignment="Center" /> 
     <StackPanel> 
      <TextBlock x:Name="Label" Text="{Binding MyLabel}" Style="{StaticResource PhoneTextExtraLargeStyle}"/> 
      <StackPanel Orientation="Horizontal"> 
      <TextBlock x:Name="ReadOnlyTextBlock" Text="{Binding MyStatus}" Style="{StaticResource PhoneTextSubtleStyle}" /> 
      <TextBlock x:Name="PaidTextBlock" Text="{Binding MyPurchase}" Style="{StaticResource PhoneTextSubtleStyle}" Foreground="Blue"/> 
      </StackPanel> 
     </StackPanel> 
     </StackPanel> 
    </DataTemplate> 
    </ListBox.ItemTemplate> 
</ListBox>