Прокрутка в Usercontrol - PullRequest
       1

Прокрутка в Usercontrol

0 голосов
/ 01 февраля 2011

Я разработал один пользовательский элемент управления, который имеет ListBox. когда мы прокручиваем, это не для меня, можешь ли ты сказать мне, что в этом не так?

У меня есть следующие предметы,

1.Panorama Page В боковых элементах управления: 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>

Когда я прокручиваю, это не работает для меня ..

Ответы [ 2 ]

2 голосов
/ 01 февраля 2011

Если вы имеете в виду вертикальную прокрутку, то показанная вами структура должна работать нормально - хотя меня немного беспокоит, где <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 голос
/ 01 февраля 2011

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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...