Pergunta

Eu tenho um UserControl personalizado com uma imagem e um rótulo, ambas as quais são definidas em tempo de design no XAML assim: <controls:HomeBarButton Icon="/SuCo;component/Resources/music.png" Text="music"/>

Quando o controle tem apenas um ícone, ele parece estar bom. Quando eu adicionar a propriedade de texto, o ícone desaparece, tanto de decoração, tempo de execução e o rótulo de texto ignora o conjunto formatação no UserControl e é apenas preto no canto superior esquerdo do controle quando o rótulo está centrado.

Relevante UserControl XAML:

    <StackPanel HorizontalAlignment="Center" VerticalAlignment="Center">
    <Image x:Name="icon" Width="102" Height="102" VerticalAlignment="Stretch"  Source="{Binding Icon}"/>
    <Label x:Name="label" HorizontalContentAlignment="Center" VerticalAlignment="Bottom" Foreground="White" FontFamily="Calibri" FontSize="24" Padding="0" Content="{Binding Text}"></Label>
</StackPanel>

Código-behind:

        public ImageSource Icon
    {
        get { return (ImageSource)this.GetValue(IconProperty); }
        set { this.SetValue(IconProperty, value); }
    }

    public static readonly DependencyProperty IconProperty = DependencyProperty.Register("Icon", typeof(ImageSource), typeof(HomeBarButton), new FrameworkPropertyMetadata(OnIconChanged));

    private static void OnIconChanged(DependencyObject dependencyObject, DependencyPropertyChangedEventArgs e)
    {
        dependencyObject.SetValue(Image.SourceProperty, e.NewValue);
    }

    public string Text
    {
        get { return (string)this.GetValue(TextProperty); }
        set { this.SetValue(TextProperty, value); }
    }

    public static readonly DependencyProperty TextProperty = DependencyProperty.Register("Text", typeof(string), typeof(HomeBarButton), new FrameworkPropertyMetadata(OnTextChanged));

    private static void OnTextChanged(DependencyObject dependencyObject, DependencyPropertyChangedEventArgs e)
    {
        dependencyObject.SetValue(Label.ContentProperty, e.NewValue);
    }

O que estou fazendo de errado? : (

Foi útil?

Solução

Em primeiro lugar, gostaria de mudar esse rótulo a um TextBlock - você usaria label para associar o texto do rótulo com outro controle. Parece, a partir de seu código, que você não está fazendo isso e só quiser exibir o texto. A outra coisa a verificar é se o seu texto está sendo exibido por cima do ícone. Eu acho que é isso que está acontecendo. Mudar para um TextBlock pode corrigir isso, se não, você provavelmente deve definir a altura e com o manualy TextBlock. Apenas a minha .02 pena.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top