私は自分のデータテンプレートも作成したリストボックスを使用しています..実際には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 個のリストは失敗しました。同じ量を他のリストボックスに追加しましたが、同じエラーが表示されました。
よろしくお願いします マックス