0

私は自分のデータテンプレートも作成したリストボックスを使用しています..実際には2つ作成しました。これらには、画像 (チェックボックスのように見えます) とテキストを含むテキストブロックが含まれています。

どちらも「複数選択」できるように作られています。Listboxitem 内の画像をクリックすると、選択されたチェックボックスに変わります。(これは、通常のチェックボックスではなく、グラフィカルな目的で行われます) ただし、それらは多かれ少なかれ同一です。そのうちの 1 つにスクロールの問題があり、いくつか確認すると、

【私の問題】 ( http://postimg.org/image/h65g38s0x/ )!

リストボックスの一番下に到達するまで下にスクロールします。

スクロールするか、一番下でマウスを放すだけで、一番上に戻ります。

最初からロードされたように、リストボックス全体が自動的にリセットされました。

私が観察したこと:

1) 選択したフィールドはリセットされません (私の例では行 4 です)。 2) この問題は、スクロールバーの一番上に移動した場合にも発生します。3) 上下のビュー内のリストアイテムはリセットされません。(したがって、私が一番下にいて、さらに下にスクロールしようとすると、表示されているListitemには何も起こりません.見えないものだけ.

4) 何も選択されていない場合、すべてがリセットされます (観察 1 に追加)。5)リストボックスのすべてのイベントをテストして、そのうちの1つがリストボックスをリセットするようにトリガーされたかどうかを確認しました(回避策を期待して)が、うまくいきません。

心に留めておくべきこと。

1) 私の 2 つのリストボックスは 2 つの異なる DataTemplates で実行されますが、それらは同一であり、textblock パスを除いて、画像は同一であり、リストボックスは itemtemplates を除いて同一です。

2) 各リストボックスには、オブジェクトを含むリストにバインドされた独自の itemssource があります。(List1. string, bool : List2, string, bool, object) List2 が失敗しています。

3)他のリストボックスは魅力のように機能します。

4) たくさんのコードを提供できますが、問題がどこで発生するかわからないため、取り入れるべきことがたくさんあります。そのため、スニペットを提供します。

    <DataTemplate x:Key="ListBoxItemTemplateAssignmentTypes">
            <Grid>
                <Grid.RowDefinitions>
                    <RowDefinition Height="Auto"/>
                    <RowDefinition Height="Auto"/>
                </Grid.RowDefinitions>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="*" />
                    <ColumnDefinition Width="*" />
                </Grid.ColumnDefinitions>
            <StackPanel Name="StackPanelAssignmentType" Grid.Column="0" Grid.Row="0"                 Margin="0 0 0 0" >
                <Form:ImageCheckBox x:Name="ImageCheckBoxState" HorizontalAlignment="Right" 
                                        Source="/SimaTech.Forms.AssignmentBringBack;component/Images/Checkbox.png" 
                                        Width="24" Height="24" MouseLeftButtonUp="ImageCheckBoxState_MouseLeftButtonUp" />
            </StackPanel>
            <StackPanel Grid.Row="0" Grid.Column="1" Orientation="Horizontal" Margin="10 0 0 0">
                <TextBlock Name="TextBlockType" Text="{Binding Path=Type}" Style="{StaticResource TextBlockStyle1}" />
                </StackPanel>
            </Grid>
    </DataTemplate>
    <DataTemplate x:Key="ListBoxItemTemplateVehicle">
        <Grid>
            <Grid.RowDefinitions>
                <RowDefinition Height="Auto"/>
                <RowDefinition Height="Auto"/>
            </Grid.RowDefinitions>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="*" />
                <ColumnDefinition Width="*" />
            </Grid.ColumnDefinitions>
            <StackPanel Name="StackPanelVehicle" Grid.Column="0" Grid.Row="0" Margin="0 0 0 0" >
                <Form:ImageCheckBox x:Name="ImageCheckBoxState" HorizontalAlignment="Right" 
                                        Source="/SimaTech.Forms.AssignmentBringBack;component/Images/Checkbox.png" 
                                        Width="24" Height="24" MouseLeftButtonUp="ImageCheckBoxState_MouseLeftButtonUp"  />
            </StackPanel>
            <StackPanel Grid.Row="0" Grid.Column="1" Orientation="Horizontal" Margin="10 0 0 0">
                <TextBlock Name="TextBlockName" Text="{Binding Path=Vehicle.Name}" Style="{StaticResource TextBlockStyle1}" />
            </StackPanel>
        </Grid>
    </DataTemplate>


     <Border Grid.Column="0" Grid.Row="2" Margin="20 10" Padding="20 0" BorderThickness="2 0 0 0" Style="{StaticResource BorderHorizontalSeperator}">
            <StackPanel>
                <StackPanel Orientation="Horizontal">
                    <StackPanel Margin="0 5">
                        <TextBlock Text="Gammel dato:" Style="{StaticResource TextBlockStyle1}" />
                        <DatePicker Name="DatePickerOldDate" CalendarStyle="{StaticResource StyleCalendar}" HorizontalAlignment="Left" Margin="0 10 0 0" Width="150" Background="White" SnapsToDevicePixels="True" >
                        </DatePicker>
                    </StackPanel>
                    <StackPanel Margin="18 5">
                        <TextBlock Text="Ny dato:" Style="{StaticResource TextBlockStyle1}" />
                        <DatePicker Name="DatePickerNewDate" CalendarStyle="{StaticResource StyleCalendar}" HorizontalAlignment="Left" Margin="0 10 0 0" Width="150" Background="White" SnapsToDevicePixels="True"/>
                    </StackPanel>
                </StackPanel>
                <StackPanel Margin="0 5">
                    <TextBlock Text="Opgave type:" Style="{StaticResource TextBlockStyle1}" Margin="0 5" />
                    <ListBox Name="ListBoxAssignmentTypes"  Margin="0 0 100 0" ItemTemplate="{StaticResource ListBoxItemTemplateAssignmentTypes}" >

                    </ListBox>
                </StackPanel>
            </StackPanel>
        </Border>
        <Border Grid.Column="1" Grid.Row="2" BorderThickness="0 0 2 0" Margin="10 10 20 10" Style="{StaticResource BorderHorizontalSeperator}">
            <StackPanel>
                <StackPanel>
                    <TextBlock Text="Montør/Montørgruppe:" Style="{StaticResource TextBlockStyle1}" Margin="0 5 0 10" />
                    <ListBox Name="ListBoxVehicles" Margin="0 0 120 0" ItemTemplate="{StaticResource ListBoxItemTemplateVehicle}" >

                    </ListBox>
                </StackPanel>
                <StackPanel Name="StackPanelButtons" Orientation="Horizontal" HorizontalAlignment="Left" Margin="0 30 0 0">
                </StackPanel>
            </StackPanel>
        </Border>

画像の「チェックマーク」を設定および削除するためのコードビハインドもありますが、これはマウスアップイベントでのみトリガーされ、スクロールとは関係ありません。

これは奇妙な問題であり、誰かがアイデアを持っているか、それを自分で経験したかどうか疑問に思いました.

編集:リストボックスに特定の数のリストアイテムがある場合、リストアイテムをデフォルトに再描画することがわかりました。最初のリストには 11 個の Listitem しか含まれておらず、残りの 25 個と 25 個のリストは失敗しました。同じ量を他のリストボックスに追加しましたが、同じエラーが表示されました。

よろしくお願いします マックス

4

1 に答える 1

0

リストボックスには、レイアウトのリセットの原因であるある種の自動レイアウト更新/更新機能が組み込まれており、スタックパネルに追加したアイテムを表示するユーザーコントロールがあるため、ここではリストボックスを使用したままにしました。

これは私にとってはうまくいきました。

于 2014-02-24T13:47:56.253 に答える