将一组单词显示为文本的最合适的wpf控件是什么?

时间:2012-01-18 09:05:27

标签: c# wpf wpf-controls

我想要显示大量的单词作为文本(不作为网格或列表),每个单词都有一组附加属性喜欢word_id和word_type。

那么最合适的WPF控制是什么?
适当的方式具有合适的性能绑定功能以及处理文字和文字的所有事情。

  • 的ListView
  • 的FlowDocument
  • DocumentView
  • WebBrowser + javascript
  • TextBlock + Run

或其他什么?

1 个答案:

答案 0 :(得分:1)

我会使用WrapPanel /自定义VirtualizingWrapPanel来展示商品,使用Converters / Triggers / VisualStateManager来管理外观 - 受制于您功能需求。

这是我的看法:

代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.ComponentModel;

namespace GridA
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();

            this.Loaded += (o, e) => 
            {
                this.i.ItemsSource = "I am a penel which displays words as seperate items. Feel free to resize myself.".Split(" ".ToCharArray());
            };
        }
    }
}

标记:

<Window x:Class="GridA.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 TextBlock.FontSize="20">
        <ItemsControl x:Name="i">
            <ItemsControl.ItemsPanel>
                <ItemsPanelTemplate>
                    <WrapPanel />
                </ItemsPanelTemplate>
            </ItemsControl.ItemsPanel>
            <ItemsControl.ItemTemplate>
                <DataTemplate>
                    <Label Margin="3" BorderBrush="Gray" BorderThickness="2" Content="{Binding}" />
                </DataTemplate>
            </ItemsControl.ItemTemplate>
        </ItemsControl>
    </Grid>
</Window>