2016-06-08 28 views
0

我正在为联系人列表编写头像。设计是这样的,如果我能得到联系人的图像,然后我显示图像。如果没有,我需要用随机颜色显示姓氏的大写字母。我知道如何显示阿凡达联系图片如何动态显示用户配置文件图像和姓氏与随机颜色UWP?

<Button> 
    <Button.Content> 
     <Ellipse> 
      <Ellipse.Fill> 
       <ImageBrush ImageSource="{Binding Image}"/> 
      </Ellipse.Fill> 
     </Ellipse> 
    </Button.Content> 
</Button> 

我想知道什么是显示那些没有图像的方向圆形象,我一定要显示姓氏的字母和填充颜色随机椭圆。我的想法是,在图像的getter中编写一些条件代码来决定显示什么。但如何用给定的字母和随机颜色来制作图像。

回答

2

你总是可以继续并生成代码所需要的图像,但是这可能会不必要地复杂化。

我会建议一个更简单的方法

<Button> 
    <Button.Content>  
     <Grid> 
      <Ellipse Fill="{x:Bind FillBrush}"/> 
      <TextBlock Text="{x:Bind Initials}" HorizontalAlignment="Center" VerticalAlignment="Center"/> 
     </Grid> 
    </Button.Content> 
</Button> 

在您的视图模型,你会是这样的:

public Brush FillBrush { get; set; } 
public string Initials { get; set; } 

和一些逻辑弄清楚如何填充这些属性。如果您有图像,请将Initials属性留空,并将FillBrush设置为ImageBrush。如果您没有图像,请将FillBrush设置为使用随机颜色初始化的新SolidColorBrush,并将Intials设置为正确的值。

*您当然需要适当的样式设置到TextBlock,提高您的视图模型的正确NotifyPropertyChanged事件。

**奖励积分,如果你可以生成与您选择的任何前景的TextBlock的,或根据所需设计的基础上,随机背景颜色选择白色或黑色前台工作只是随机的背景颜色。

我认为这将是更容易编写和维护,并在运行时不是生成的图像会更快,当你没有一个了。

+0

谢谢!它非常完美!我在画笔内添加了一些条件代码。谢谢! – litaoshen