0

MainPage.xaml でリストボックスを使用しています。マウスを上下に動かすと、コンテンツが消えて Windows Phone エミュレーターの画面に表示されるのがわかります。マウスを離すと、最初のアイテムからコンテンツが開始されます。リストボックスの最後の項目を選択したいとしましょう。画面上の最後のアイテムを保持するにはどうすればよいですか? この問題を解決するための例やアイデアを教えてください。前もって感謝します。

編集:

私のユーザーコントロールがあります:

<UserControl x:Class="CMSPhoneApp.QueueListControl"
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"
mc:Ignorable="d"
FontFamily="{StaticResource PhoneFontFamilyNormal}"
FontSize="{StaticResource PhoneFontSizeNormal}"
Foreground="{StaticResource PhoneForegroundBrush}"
d:DesignHeight="480" d:DesignWidth="480"
xmlns:local="clr-namespace:CMSPhoneApp"  >

<UserControl.Resources>       
    <local:VisibilityConverter x:Key="VisibilityConverter"/>
    <local:ColumSpanConverter x:Key="ColumSpanConverter"/>        
</UserControl.Resources>


<Grid x:Name="LayoutRoot"  Background="Transparent">
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto"/>
    </Grid.RowDefinitions>

    <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">       
            <ListBox x:Name="lst" HorizontalAlignment="Left" Margin="6,6,0,0"   VerticalAlignment="Top" Width="400"    
                  ItemsSource="{Binding Path=MyQueue}"  
                      SelectedItem="{Binding Path=CurrentQueue, Mode=TwoWay}"  >
                <ListBox.ItemTemplate>
                    <DataTemplate>
                        <Border BorderThickness="1,1,1,1" BorderBrush="Blue">
                            <Grid Width="auto" HorizontalAlignment="Stretch" >                                  
                                    <Grid.RowDefinitions>                                          
                                    <RowDefinition Height="auto"/>
                                </Grid.RowDefinitions>
                                    <Grid.ColumnDefinitions>
                                        <ColumnDefinition Width="35" />
                                        <ColumnDefinition Width="250"/>
                                        <ColumnDefinition Width="125" />
                                    </Grid.ColumnDefinitions>
                                    <Image Source="{Binding Type}" Grid.Row="0" Grid.Column="0"/>
                                    <TextBlock  Grid.Row="0" Grid.Column="1"  Grid.ColumnSpan= "{Binding isSpan, Converter={StaticResource ColumSpanConverter}}" Text="{Binding summary}" TextWrapping="Wrap"
                                             Style="{StaticResource PhoneTextAccentStyle}"  />
                                    <Button x:Name="btnAction" Grid.Row="0" Grid.Column="3" ClickMode="Press" Click="btnAction_Click" Style="{StaticResource ButtonStyle1}"
                                            Visibility="{Binding isVisibility, Converter={StaticResource VisibilityConverter}}"
                                         Tag="{Binding callNumber}">

                                        <Button.Content>
                                            <TextBlock Width="85" Height="70" Text="{Binding ActionCaption}" 
                                                       Style="{StaticResource LabelStyle_20}"     />
                                        </Button.Content>
                                    </Button>

                                </Grid>
                                </Border>
                    </DataTemplate>                    

                </ListBox.ItemTemplate>
            </ListBox>

    </Grid>
</Grid>

xaml ページは、上記のユーザー コントロールを使用します。

   <phone:PhoneApplicationPage xmlns:my="clr-namespace:CMSPhoneApp"  
x:Class="CMSPhoneApp.TestPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
FontFamily="{StaticResource PhoneFontFamilyNormal}"
FontSize="{StaticResource PhoneFontSizeNormal}"
Foreground="{StaticResource PhoneForegroundBrush}"
SupportedOrientations="Portrait" Orientation="Portrait"
mc:Ignorable="d" d:DesignHeight="768" d:DesignWidth="480"
shell:SystemTray.IsVisible="True"
xmlns:local="clr-namespace:CMSPhoneApp"
  xmlns:toolkit="clr- namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls.Toolkit"
  >

<phone:PhoneApplicationPage.Resources>

    <local:QueueItemViewModel x:Key="TestViewModel"/>
    <DataTemplate x:Name="PickerItemTemplate">
        <StackPanel Orientation="Horizontal" >
            <TextBlock Text="{Binding city}" FontSize="24" HorizontalAlignment="Center" VerticalAlignment="Center" />
        </StackPanel>
    </DataTemplate>
    <DataTemplate x:Name="PickerFullModeItemTemplate">
        <StackPanel Orientation="Horizontal" >
            <TextBlock Text="{Binding city}" Margin="16 0 0 0" FontSize="24" FontFamily="{StaticResource PhoneFontFamilyLight}" />                        
        </StackPanel>
    </DataTemplate>


</phone:PhoneApplicationPage.Resources>
<!--LayoutRoot is the root grid where all page content is placed-->
<Grid x:Name="LayoutRoot" Background="Transparent" DataContext="{StaticResource TestViewModel}">
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="*"/>
        <RowDefinition Height="Auto"/>           
    </Grid.RowDefinitions>

    <!--TitlePanel contains the name of the application and page title-->
    <StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28"  >
        <TextBlock x:Name="ApplicationTitle" Text="MY APPLICATION" Style="{StaticResource PhoneTextNormalStyle}"/>
        <TextBlock x:Name="PageTitle" Text="Test page" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/>
    </StackPanel>

    <StackPanel x:Name="City" Grid.Row="1" Margin="12,0,12,0"  Orientation="Horizontal">
        <toolkit:ListPicker   x:Name="listPicker" ItemTemplate="{StaticResource PickerItemTemplate}"  
              Header="Location"   CacheMode="BitmapCache" Width="194" 
                        SelectedItem="{Binding city}"        />

    </StackPanel>
    <!--ContentPanel - place additional content here-->       
        <my:QueueListControl x:Name="lst" Grid.Row="2"/>     
    <StackPanel Grid.Row="3" Orientation="Horizontal" >
        <Button x:Name="btnQueue" Style="{StaticResource ButtonStyle1}" Content="Queue"/>
        <Button x:Name="btnRefresh" Style="{StaticResource ButtonStyle1}" Content="Refresh"/>
        </StackPanel>

</Grid>

GetResponseStream を取得した後に itemSource を設定するためのコード ビハインド:

 Dispatcher.BeginInvoke(new Action(() => lst.lst.ItemsSource = ar.cmsQueue));   
4

2 に答える 2

1

そこにいます。リストボックスの高さを設定していないため、自動である親から高さを取得しています(これは、リストボックスの高さの境界がないことを意味します)。したがって、マウスを押したままにすると、任意の項目までスクロールできますが、特定の項目で停止することはできません。Height を ListBox に約 400 に固定してから確認します。うまくいけば、それはあなたの問題を解決するはずです

于 2012-08-24T15:18:04.333 に答える
0

コードのどこかでこれに似たようなことをしていますか?

listbox.ScrollIntoView(0);ここで、listbox は mainPage.xaml の ListBox の名前です。

そのようなコード行を使用しないようにしてください。これとは別に、コードがないと問題の性質を理解できません。それが役に立てば幸い

于 2012-08-24T03:39:03.330 に答える