WPF 自定义文本列表

来源:互联网 发布:专业网站美工 编辑:程序博客网 时间:2024/06/07 15:45

自定义的WPF文本列表样式


一、直接把样式贴出来


<!--文本列表样式-->        <Style x:Key="TextItemsListStyle" TargetType="ItemsControl">            <Setter Property="ItemsPanel">                <Setter.Value>                    <ItemsPanelTemplate>                        <StackPanel Orientation="Vertical"/>                    </ItemsPanelTemplate>                </Setter.Value>            </Setter>            <Setter Property="ItemTemplate">                <Setter.Value>                    <DataTemplate>                        <StackPanel Orientation="Horizontal">                            <Ellipse Width="4" Height="4" Margin="6,0,0,0" VerticalAlignment="Center" HorizontalAlignment="Left" Fill="Gray"></Ellipse>                            <Label Height="25" Content="{Binding Visual}" ToolTip="{Binding Title}" Foreground="#659BFF"/>                        </StackPanel>                    </DataTemplate>                </Setter.Value>            </Setter>        </Style>

二、如何使用


<ItemsControl Style="{StaticResource TextItemsListStyle}" Name="ItemList"/>this.ItemList.ItemsSource = new List<object>()            {                new { Title = "第1行文本提示",Visual = "第1行文本内容"},                new { Title = "第2行文本提示",Visual = "第2行文本内容"},                new { Title = "第3行文本提示",Visual = "第3行文本内容"}            };


三、如何添加省略号。。。


StringSupplement(YourTitle,32,"...")

public string StringSupplement(string OldString,int MaxLeght,string EndString = "")        {            string NewString = OldString;            int EndLength = 0;            for (int nIndex = 0; nIndex < EndString.Length; nIndex++)            {                byte[] byte_len = System.Text.Encoding.Default.GetBytes(EndString.Substring(nIndex, 1));                if (byte_len.Length > 1)                    EndLength += 2;  //如果长度大于1,是中文,占两个字节,+2                else                    EndLength += 1;  //如果长度等于1,是英文,占一个字节,+1            }            int Length = 0;            for (int nIndex = 0; nIndex < OldString.Length; nIndex++)            {                byte[] byte_len = System.Text.Encoding.Default.GetBytes(OldString.Substring(nIndex, 1));                //如果长度大于1,是中文,占两个字节,+2                //如果长度等于1,是英文,占一个字节,+1                Length += byte_len.Length > 1 ? 2 : 1;                //如果长度超出添加结束字符串                if (Length + EndLength > MaxLeght)                {                    NewString = OldString.Substring(0, nIndex) + EndString;                    break;                }            }            return NewString;        }



0 0
原创粉丝点击