0

連絡先リストのアバターを書いています。デザインはこんな感じで、連絡先の画像を取得できたら画像を表示します。そうでない場合は、姓の大文字をランダムな色で表示する必要があります。丸い画像を表示する方法を知っています

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

画像のないものを表示する方向は何だろうと思っていて、姓の文字を表示し、楕円をランダムな色で塗りつぶす必要があります。私の考えは、画像のゲッターに条件付きコードを記述して、何を表示するかを決定することです。しかし、与えられた文字とランダムな色で画像を作成する方法。

4

1 に答える 1

3

必要な画像をコードで生成することはいつでもできますが、それは不必要に複雑になる可能性があります。

もっと簡単なアプローチをお勧めします

<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 に適切なスタイルを設定し、ViewModel で適切な NotifyPropertyChanged イベントを発生させる必要があります。

**ボーナス ポイントは、TextBlock に選択した前景で機能するランダムな背景色のみを生成できる場合、または目的のデザインに応じて、ランダムな背景色に基づいて白または黒の前景を選択できる場合です。

これは、まだイメージがない場合にイメージを生成するよりも、コーディングと保守がはるかに簡単で、実行時に高速になると思います。

于 2016-06-08T18:09:27.643 に答える