zoukankan      html  css  js  c++  java
  • MyFesttoWord P10 ChatList and ChatListItem

    1,新建一个USer Control------ChatListItemControl

    <UserControl x:Class="Fasetto.Word.ChatListItemControl"
                 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                 xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
                 xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
                 xmlns:local="clr-namespace:Fasetto.Word"
                 mc:Ignorable="d"
                d:DesignWidth="300">
        <UserControl.Resources>
            <Style x:Key="ContainterStyle" TargetType="{x:Type ContentControl}">
                <Setter Property="Template">
                    <Setter.Value>
                        <ControlTemplate>
                            <Border x:Name="background" Background="{StaticResource ForegroundLightBrush}">
                                <Grid  x:Name="container"  Background="Transparent">
                                    <Grid.ColumnDefinitions>
    
                                        <!--Profile pictrue-->
                                        <ColumnDefinition Width="Auto" />
                                        <!--Main content-->
                                        <ColumnDefinition Width="*" />
                                    </Grid.ColumnDefinitions>
    
                                    <!--New Message Indicate Bar-->
                                    <Border  Background="Red"
                                             Width="4"
                                             HorizontalAlignment="Left"
                                             Visibility="{Binding NewContentAvailable,Converter={local:BooleanToVisibilityConverter},ConverterParameter=True}"
                                             />
    
                                    <!--Profile pictrue-->
                                    <Border Grid.Column="0" Padding="8 15" >
                                        <Border Background="{Binding ProfilePictureRGB, Converter={local:StringToSolidBrushConverter}}"
                                               Height="40"
                                                Width="{Binding ActualHeight, RelativeSource={RelativeSource Self}}"
                                                CornerRadius="{Binding ActualHeight, RelativeSource={RelativeSource Self}}"
                                            >
                                            <TextBlock Text="{Binding Initials}"
                                                Foreground="{StaticResource ForegroundLightBrush}"
                                                VerticalAlignment="Center"
                                                HorizontalAlignment="Center"
                                                FontFamily="{StaticResource LatoRegular}"
                                                FontSize="{StaticResource FontSizeLarge}"
                               />
                                        </Border>
    
                                    </Border>
    
                                    <Border Grid.Column="2" Padding="0 0 8 0">
                                        <StackPanel VerticalAlignment="Center">
    
                                            <!--Name-->
                                            <TextBlock FontFamily="{StaticResource LatoRegular}"
                                               Text="{Binding  Name}"
                                               Foreground="{StaticResource WordBlueBrush}"
                                               TextTrimming="CharacterEllipsis"
                                               Padding="0 0 0 2"
                                                   />
    
                                            <!--Message-->
                                            <TextBlock FontFamily="{StaticResource LatoRegular}"
                                               Text="{Binding Message}"
                                               Foreground="{StaticResource ForegroundDarkBrush}"
                                               TextTrimming="CharacterEllipsis"
                                               Padding="0 2 0 0"/>
                                        </StackPanel>
                                    </Border>
                                </Grid>
    
                            </Border>
                          <!--Trigger-->
                            <ControlTemplate.Triggers>
                                <!--Data Trigger-->
                                <DataTrigger Binding="{Binding IsSelect}" Value="True">
                                    <Setter Property="Background" TargetName="background"  Value="{StaticResource WordVeryVeryLightBlueBrush}" />
                                </DataTrigger>
                                <!--Event Trigger-->
                                <EventTrigger RoutedEvent="MouseEnter">
                                    <BeginStoryboard>
                                        <Storyboard>
                                            <ColorAnimation To="{StaticResource WordVeryVeryLightBlue}" Duration="0:0:0.3" Storyboard.TargetName="container" Storyboard.TargetProperty="Background.Color" />
                                        </Storyboard>
                                    </BeginStoryboard>
                                </EventTrigger>
                                <EventTrigger RoutedEvent="MouseLeave">
                                    <BeginStoryboard>
                                        <Storyboard>
                                            <ColorAnimation  Duration="0:0:0.3" Storyboard.TargetName="container" Storyboard.TargetProperty="Background.Color" />
                                        </Storyboard>
                                    </BeginStoryboard>
                                </EventTrigger>
                            </ControlTemplate.Triggers>
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>
            </Style>
        </UserControl.Resources>
        <ContentControl d:DataContext="{x:Static local:ChatListItemDesignModel.Instance}" Style="{StaticResource ContainterStyle}"/>
    </UserControl>
    
    • 建立一个ContentControl,并使用Style.并将其使用d:DataContext设定设计时的绑定内容.

    image,

    • 设定事件MouseEnter 和 MouseLeave
    • 设定Border--的背景色.这种利用外包Border的方式进行颜色的更改的方式值得学习.
    • 设定string 转 SolidColorBrush 的函数
    • public override object Convert(object value, Type targetType, object parameter, CultureInfo culture)
          {

                 return (SolidColorBrush)(new BrushConverter()).ConvertFromString($"#{value}");
          }

    2,新建对应的数据类型ChatListItemViewModel

    public class ChatListItemViewModel : BaseViewModel
        {
            /// <summary>
            /// the display name of the chat list
            /// </summary>
            public string Name { get; set; }
    
            /// <summary>
            /// the Message from this chat
            /// </summary>
            public string Message { get; set; }
    
            /// <summary>
            /// the intials to show from the circle.
            /// </summary>
            public string Initials { get; set; }
    
            /// <summary>
            /// the rgb values for the background circle
            /// </summary>
            public string ProfilePictureRGB { get; set; }
    
            /// <summary>
            /// Indicate if there is new message is on.
            /// </summary>
            public bool NewContentAvailable { get; set; }
            public bool IsSelected { get; set; }
    
    
    
        }

    3,新建ChatLilstControl控件

    <UserControl x:Class="Fasetto.Word.ChatListControl"
                 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                 xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
                 xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
                 xmlns:local="clr-namespace:Fasetto.Word"
                 mc:Ignorable="d"
                 d:DesignHeight="300" d:DesignWidth="300">
        <ScrollViewer VerticalScrollBarVisibility="Auto">
            <Grid DataContext="{x:Static local:ChatListDesignModel.Instance}" Background="{StaticResource ForegroundLightBrush}">
                <ItemsControl ItemsSource="{Binding Items}">
                    <ItemsControl.ItemTemplate>
                        <DataTemplate>
                            <local:ChatListItemControl/>
                        </DataTemplate>
                    </ItemsControl.ItemTemplate>
                </ItemsControl>
            </Grid>
        </ScrollViewer>
    
    </UserControl>
    
    • 设定SocrollViewer,以支持显示滚动条
    • 设定父容器的DataContext,以使其支持类


    4,新建ChatListViewModel

     public class ChatListViewModel:BaseViewModel
        {
          public List<ChatListItemViewModel> Items { get; set; }
        }

    5,新建ChatListItemDesignModel-用于调试用户控件.带d的数据类型只在设计时显示

     class ChatListItemDesignModel:ChatListItemViewModel
        {
            #region Singleton
    
            /// <summary>
            /// 
            /// </summary>
            public static ChatListItemDesignModel Instance => new ChatListItemDesignModel();
            #endregion
    
            #region Constructor
    
            public ChatListItemDesignModel()
            {
                Initials = "BC";
                Message = "it's a very funny gamepppppppppppppppppppppppppppppppppppppp";
                Name = "abcd";
                ProfilePictureRGB = "2011f3";
                NewContentAvailable = false;
            }
            #endregion
    
    
    
        }

    6,新建CHatListDesignModel

    public class ChatListDesignModel : ChatListViewModel
        {
            #region Singleton
    
            /// <summary>
            /// 
            /// </summary>
            public static ChatListDesignModel Instance => new ChatListDesignModel();
            #endregion
    
            #region Constructor
    
            public ChatListDesignModel()
            {
                Items = new List<ChatListItemViewModel>
                {
                     new ChatListItemViewModel
                        {
                            Initials = "AA",
                            Message = "it's a very funny gaddddddme",
                            Name = "bb",
                            ProfilePictureRGB = "40995c",
                            IsSelected=true,
                            NewContentAvailable=true,
    
                        },
                     new ChatListItemViewModel
                        {
                            Initials = "AA",
                            Message = "it's a very funny gaddddddme",
                            Name = "bb",
                            ProfilePictureRGB = "30192c",
                            IsSelected=true,
                            NewContentAvailable=true,
    
                        },
                       new ChatListItemViewModel
                        {
                            Initials = "AA",
                            Message = "it's a very funny gaddddddme",
                            Name = "bb",
                            ProfilePictureRGB = "40995c",
                            IsSelected=true,
                            NewContentAvailable=true,
    
                        },
                     new ChatListItemViewModel
                        {
                            Initials = "AA",
                            Message = "it's a very funny gaddddddme",
                            Name = "bb",
                            ProfilePictureRGB = "30192c",
                            IsSelected=true,
                            NewContentAvailable=true,
    
                        },
                       new ChatListItemViewModel
                        {
                            Initials = "AA",
                            Message = "it's a very funny gaddddddme",
                            Name = "bb",
                            ProfilePictureRGB = "40995c",
                            IsSelected=true,
                            NewContentAvailable=true,
    
                        },
                     new ChatListItemViewModel
                        {
                            Initials = "AA",
                            Message = "it's a very funny gaddddddme",
                            Name = "bb",
                            ProfilePictureRGB = "30192c",
                            IsSelected=true,
                            NewContentAvailable=true,
    
                        },
                       new ChatListItemViewModel
                        {
                            Initials = "AA",
                            Message = "it's a very funny gaddddddme",
                            Name = "bb",
                            ProfilePictureRGB = "40995c",
                            IsSelected=true,
                            NewContentAvailable=true,
    
                        },
                     new ChatListItemViewModel
                        {
                            Initials = "AA",
                            Message = "it's a very funny gaddddddme",
                            Name = "bb",
                            ProfilePictureRGB = "30192c",
                            IsSelected=true,
                            NewContentAvailable=true,
    
                        },
                       new ChatListItemViewModel
                        {
                            Initials = "AA",
                            Message = "it's a very funny gaddddddme",
                            Name = "bb",
                            ProfilePictureRGB = "40995c",
                            IsSelected=true,
                            NewContentAvailable=true,
    
                        },
                     new ChatListItemViewModel
                        {
                            Initials = "AA",
                            Message = "it's a very funny gaddddddme",
                            Name = "bb",
                            ProfilePictureRGB = "30192c",
                            IsSelected=true,
                            NewContentAvailable=true,
    
                        },
    
                };


    image

  • 相关阅读:
    汉文博士 0.5.6.2345 修订版发布
    汉文博士 0.5.6 正式版发布
    汉文博士 0.5.5 正式版发布
    汉文博士新测试版发布(0.5.4.2228)
    海盗(Haidao)网店系统最新官方版
    ZipMarket数字内容/素材交易网站源码项目
    windows phone 8 使用页面传对象的方式 实现页面间的多值传递
    仿win8磁贴界面以及功能
    三角形状的点阵模糊效果iOS源码
    Coding iOS客户端应用源码
  • 原文地址:https://www.cnblogs.com/frogkiller/p/14458827.html
Copyright © 2011-2022 走看看