2016-06-08 8 views
0

Я пишу Аватар для списка контактов. Дизайн такой, если я могу получить изображение контакта, тогда я показываю изображение. Если нет, мне нужно показать заглавную букву фамилии со случайным цветом. Я знаю, как отображать круглое изображениеАватар контакт Изображение как динамически отображать изображение профиля пользователя и фамилию со случайным цветом UWP?

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

Я интересно, что это направление, чтобы отобразить те без изображения, и я должен показать букву фамилии и заполнить эллипс со случайным цветом. Моя идея заключается в том, что в get-get Image напишите условный код, чтобы решить, что отображать. Но как сделать изображение с заданным буквой и случайным цветом.

ответ

2

Вы всегда можете продолжить генерировать требуемое изображение в коде, но это может стать излишне сложным.

, я хотел бы предложить более простой подход

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

В вашей ViewModel вы бы что-то вроде этого:

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

И какая-то логика, чтобы выяснить, как заполнить эти свойства. Если у вас есть изображение, оставьте свойство Initials пустым и установите FillBrush в ImageBrush. Если у вас нет изображения, установите FillBrush в новый SolidColorBrush, инициализированный случайным цветом, и установите Intials в правильное значение.

* Конечно, вам необходимо установить правильный стиль в TextBlock и поднять правильные события NotifyPropertyChanged в ViewModel.

** Бонусные баллы, если вы можете генерировать только случайные цвета фона, которые работают с любым передним планом, который вы выбираете для TextBlock, или в зависимости от желаемого дизайна, выберите белый или черный передний план на основе случайного цвета фона.

Я думаю, что было бы намного проще кодировать и поддерживать и быть быстрее во время выполнения, чем генерировать изображения, если у вас их еще нет.

+0

Спасибо! Это сработало отлично! Я добавил некоторый условный код внутри кисти. Спасибо! – litaoshen

 Смежные вопросы

  • Нет связанных вопросов^_^