我正在使用Listbox,我也制作了自己的Datatemplate。实际上我已经制作了两个。 它们包含一个图像(看起来像一个复选框)和一个带有一些文本的文本块。
它们都是制作的,所以你可以“多选”。每当您单击Listboxitem中的图像时,它都会更改为选中的复选框。 (这是为了实现目的,而不是常规的复选框)但它们或多或少相同。其中一个有滚动问题,当我检查其中一些时,
[我的问题](http://postimg.org/image/h65g38s0x/)!
然后一直向下滚动,直到我到达列表框的底部。
然后回到顶部,只需滚动,或在底部释放鼠标。
我的整个列表框已经自我重置,就像刚从头开始加载一样。
我观察过的事情:
1)它不会重置我选择的字段(在我的示例第4行中) 2)如果我点击滚动条的顶部,也会出现此问题。 3)顶部和底部视图中的列表项不会重置。 (所以如果我在底部,并尝试向下滚动,Listitems中没有任何可见的东西。只有那些看不到。
4)如果没有选择任何内容,则一切都会重置(添加到观察1)。 5)我在列表框上测试了所有事件,看看其中一个事件是否被触发重置我的列表框(希望有一个解决方法),但是没有运气。
要记住的事情。
1)我的两个列表框在两个不同的DataTemplates上运行,但它们是相同的,减去文本块路径,图像是相同的,列表框是相同的,除了它们的itemtemplates。
2)每个列表框都有自己的itemssource绑定到包含对象的列表。 (List1.string,bool:List2,string,bool,object)List2,是一个失败的。
3)另一个Listbox就像魅力一样。
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>
我还有代码, 设置和删除图像中的“复选标记”,但这只是mouseupevent上的triggerede,与滚动无关。
这是一个奇怪的问题,我想知道是否有人有想法,或者自己经历过。
编辑: 发现当列表框具有一定数量的列表项时,它会将列表项重新绘制为默认值。第一个列表只包含11个Listitems,另外25个,而25个则没有。我将相同的金额添加到其他列表框中,同样的错误显示它自己。
致以最崇高的敬意 最大
答案 0 :(得分:0)
我在这里使用了一个Listbox,因为它在功能中有一些自动布局刷新/更新构建,这是我的布局重置的原因,以及usercontrol呈现一个项目,我将其添加到stackpanel。
这对我有用。