WPF 自定义文本列表

自定义的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;
        }



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值