是否有可能有ListBox
(其中包含ScrollViewer
默認)和ListBoxItem
與ScrollViewer
? 我想實現下一個視圖: WPF:ListBoxItem帶滾動條
而且這個ListBox還應該支持虛擬化。 (我知道如何啓用它,我只是想將它的工作,如果我使用2個滾動觀衆?)
更新: 我需要使用ListBox.ItemTemplate
,因爲我結合ItemsSource
。
感謝您的提示。
是否有可能有ListBox
(其中包含ScrollViewer
默認)和ListBoxItem
與ScrollViewer
? 我想實現下一個視圖: WPF:ListBoxItem帶滾動條
而且這個ListBox還應該支持虛擬化。 (我知道如何啓用它,我只是想將它的工作,如果我使用2個滾動觀衆?)
更新: 我需要使用ListBox.ItemTemplate
,因爲我結合ItemsSource
。
感謝您的提示。
簡單。 (我已經給你三種方法來做到這一點,必須是正確的!)
通過XAML:
<ListBox x:Name="ListBoxControl" HorizontalAlignment="Left" Height="320" VerticalAlignment="Top" Width="520">
<ListBoxItem Width="520">
<ScrollViewer HorizontalScrollBarVisibility="Visible" VerticalScrollBarVisibility="Disabled">
<Label Content="My Name is KidCode. This is a reeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeaaaaaaaaaaaaaaaaaaaaaaaaly long comment."/>
</ScrollViewer>
</ListBoxItem>
</ListBox>
從C#:
namespace StackExchange
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
var lbv = new ListBoxItemSV()
{
Height = 40,
Width= 520,
Background = Brushes.Blue
};
ListBoxControl.Items.Add(lbv);
}
public class ListBoxItemSV : ListBoxItem
{
ScrollViewer sv = new ScrollViewer()
{
HorizontalScrollBarVisibility = ScrollBarVisibility.Visible,
VerticalScrollBarVisibility = ScrollBarVisibility.Hidden
};
Label lbl = new Label()
{
Content = "A really, really, really, really, really, really, really, really, really, really, really, really, really, really, really, really long name."
};
public ListBoxItemSV()
{
sv.Content = lbl;
this.Content = sv;
}
}
}
}
此結果在以下內容中:(我已經添加了一條簡短的評論,以便您可以看到差異,您可以使滾動條始終貫穿整個過程,但這僅僅是一個示例。)
如果您使用項目模板:(我從來沒有這樣做,所以如果它的錯誤不要拍我! :))
XAML:
<ListBox x:Name="ListBoxTwo">
<ListBox.ItemTemplate>
<DataTemplate>
<ScrollViewer HorizontalScrollBarVisibility="Visible" VerticalScrollBarVisibility="Disabled" Width="520">
<Label Content="{Binding}"/>
</ScrollViewer>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
代碼背後:
List<string> Mylist = new List<string>();
Mylist.Add("Short Name");
Mylist.Add("Another Short Name");
Mylist.Add("A massively, hugely, giganticly, monstorously large name. (Its even bigger than than you think...............) ");
ListBoxTwo.ItemsSource = Mylist;
輸出:
Scrollviewers是醜陋的。如何使用'TextWrapping'代替? –
'TextWrapping'不合適。 –