我有以下XAML用戶控件:後面Silverlight中的RichTextBox /列表框/ ScrollViewer中奇怪的行爲
<ScrollViewer>
<ListBox ItemsSource="{Binding Items}">
<ListBox.ItemTemplate>
<DataTemplate>
<RichTextBox>
<Paragraph>
<Run Text="{Binding}"/>
</Paragraph>
</RichTextBox>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</ScrollViewer>
和代碼:
public partial class MainPage {
public MainPage() {
InitializeComponent();
Items = new ObservableCollection<string>(Enumerable.Range(0, 100).Select(x => "some text"));
DataContext = this;
}
public ObservableCollection<string> Items { get; set; }
}
運行此代碼時,對於垂直滾動條ScrollViewer下降到底部。但是,如果我刪除了在運行中的RichTextBox和硬編碼的文本結合:
<Run Text="some text"/>
現在滾動條停留在頂部(如我所期望的)。
這是一個錯誤?如果不是,發生了什麼事?我該如何解決這個問題(注意:這是簡化的XAML,我需要ScrollViewer,因爲ListBox實際上是在網格中)?
嗨,可能是一個愚蠢的 - 但ListView可以滾動其內容w /出滾動查看器 - 如果你將你的ListView直接嵌套到網格中,它將顯示垂直滾動條,它不會滾動到底部。你也可以劫持ItemsPanel。 – 2011-10-06 15:58:27
Silverlight沒有ListView控件。我懷疑即使它在模板中使用了ScrollViewer。 – JontyMC
似乎對我來說是一個bug。對於它的價值,如果用一個TextBlock代替RichTextBox(並且保留{Binding}在那裏),那麼scrollviewer的行爲通常會保持在頂部。所以它是RichTextBox和展示該問題的綁定內容的組合。 –