我有一个带有图像和标签的自定义UserControl,它们都是在设计时在XAML中设置的,如下所示:<controls:HomeBarButton Icon="/SuCo;component/Resources/music.png" Text="music"/>
当控件只有一个Icon时,它看起来很好。当我添加Text属性时,图标在设计和运行时都会消失,文本标签会忽略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);
}
我做错了什么? :(
答案 0 :(得分:0)
首先,我将该Label更改为TextBlock - 您将使用Label将标签的文本与另一个控件相关联。从您的代码来看,您似乎没有这样做,只想显示文本。要检查的另一件事是您的文本是否显示在图标的顶部。我猜这就是发生的事情。更改为TextBlock可能会解决此问题,如果没有,您可能应该手动设置高度和TextBlock。只是我的.02值得。