Frage

Ich habe eine benutzerdefinierte Usercontrol mit einem Bild und einer Markierung, welche beide zur Entwurfszeit in der XAML festgelegt sind wie folgt: <controls:HomeBarButton Icon="/SuCo;component/Resources/music.png" Text="music"/>

Wenn die Steuerung nur ein Icon hat, es sieht gut aus. Wenn ich die Eigenschaft Text hinzufügen, verschwindet das Symbol sowohl design- und Laufzeit und die Textbeschriftung ignoriert die Formatierung Satz in dem Usercontrol und ist nur schwarz in der linken oberen Ecke des Steuer, wenn das Etikett zentriert ist.

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>

-Code-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);
    }

Was mache ich falsch? : (

War es hilfreich?

Lösung

Als erstes würde ich das Etikett auf einen Textblock ändern - Sie würden Etikett, um den Text des Etiketts mit einer anderen Steuerung zu verbinden. Es scheint, aus dem Code, dass Sie dies nicht tun, und wollen nur den Text angezeigt werden soll. Die andere Sache zu prüfen ist, wenn Ihr Text über die Spitze Ihres Symbols angezeigt wird. Ich würde vermuten, dass das ist, was geschieht. Der Wechsel zu einem Textblock kann dies beheben, wenn nicht, werden Sie wahrscheinlich die Höhe einstellen sollten und mit der TextBlock- manualy. Nur mein .02 wert.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top