سؤال

ولدي UserControl مخصصة مع صورة والتسمية، وكلاهما يتم تعيين في وقت التصميم في XAML مثل ذلك: <controls:HomeBarButton Icon="/SuCo;component/Resources/music.png" Text="music"/>

عند ديها سيطرة مجرد رمز، يبدو على ما يرام. عندما أضيف الخاصية Text، يختفي الرمز في كل design- ووقت التشغيل وتسمية نص يتجاهل مجموعة التنسيق في في UserControl ويبعد الأسود في الزاوية اليسرى العليا من السيطرة عندما يتم توسيط التسمية.

وذات الصلة 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>

ورمز وراء:

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

وماذا أفعل الخطأ؟ : (

هل كانت مفيدة؟

المحلول

أولا، أود أن تغيير ذلك تسمية لTextBlock - ستستخدم التسمية لربط نص التسمية مع عنصر تحكم آخر. على ما يبدو، من التعليمات البرمجية الخاصة بك، وأنك لا تفعل هذا وتريد فقط لعرض النص. والشيء الآخر هو للتحقق ما إذا كان يتم عرض النص على الجزء العلوي من الرمز الخاص بك. وأود أن أعتقد أن هذا هو ما يحدث. تغيير إلى TextBlock قد لحل هذه المشكلة، إن لم يكن، ربما يجب عليك تعيين ارتفاع ومع من manualy TextBlock. فقط بلدي .02 قيمتها.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top