2014-02-22 96 views
0

ListBox似乎总是裁剪最后一个项目。
例如,使用箭头向上或向下移动或滚动条。ListBox裁剪顶部或底部

是否可以裁剪第一个项目,如果向下移动和
并裁剪最后一个项目如果向上移动?

只应该是一次一个问题,所以这是可选的。
如果鼠标点击最后一项然后裁剪顶部?
鼠标点击任何其他位置,然后裁剪底部。

ScrollViewer.CanContentScroll =“False”修正了很多。
现在单击项目的行为就像我想要的。
项目上的向下箭头表现得像我想要的。
但滚动条移动作物都在顶部底部。

<Window x:Class="ListBoxLastIntoView.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="MainWindow" Height="350" Width="525"> 
    <Grid> 
     <ListBox x:Name="lb" Width="420" HorizontalAlignment="Left" 
       ScrollViewer.HorizontalScrollBarVisibility="Disabled" ScrollViewer.VerticalScrollBarVisibility="Visible"> 
      <ListBox.ItemTemplate> 
       <DataTemplate> 
        <Border Width="390" BorderBrush="Purple" Padding="2" Margin="2" BorderThickness="2"> 
         <TextBlock TextWrapping="Wrap" Width="380" TextTrimming="CharacterEllipsis" Text="{Binding Mode=OneWay}"/> 
        </Border> 
       </DataTemplate> 
      </ListBox.ItemTemplate> 
     </ListBox> 
    </Grid> 
</Window> 
namespace ListBoxLastIntoView 
{ 
    public partial class MainWindow : Window 
    { 
     private string lorum = "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."; 
     private List<string> lorums = new List<string>(); 
     public MainWindow() 
     { 
      for (int i = 1; i < 100; i++) lorums.Add(i.ToString() + " " + lorum);   
      InitializeComponent(); 
      lb.ItemsSource = lorums; 
     } 
    } 
} 

回答

1

如果你想在ListBox年底将空格,你可以使用这样的结构:

<ListBox x:Name="lb"  
     ScrollViewer.CanContentScroll="False" ... /> 
+0

我不跟随的第一句话。这100个只是任意的。不是在谈论整个项目 - 作物的项目。 ScrollViewer.CanContentScroll =“False”修复了很多。没有解决的问题是在顶部或底部使用滚动条作物(取决于方向) - 现在滚动条作物在顶部和底部。 – Paparazzi

+0

@Blam:如果你需要作物上的条件,这个条件可以在'DataTrigger'中实现。在这个触发器将是一个属性,将通知滚动方向或底部。 –

+0

我不关注。 – Paparazzi