我有一个奇怪的问题,我不知道该怎么找到-我在这里寻找了类似的帖子,但是失败了。
问题是我在WPF中具有自定义控件,显然,我想在多个项目中重用它。
该控件中有图片背景,上面有标签(用Panel.ZIndex
确保)。
在一个项目中它可以正确显示,而在另一个项目中,Label
仅显示,由于某种原因图像没有显示。
可能是什么问题?我对此感到迷茫...
下面的控件代码:
<UserControl x:Class="SampleControls.LabelWithBoxBackground"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:SampleControls"
mc:Ignorable="d"
d:DesignHeight="150" d:DesignWidth="400" x:Name="labelWithBoxBackground">
<Grid>
<Image Source="pack://application:,,,/Images/boxImage.png" Stretch="Fill" Panel.ZIndex="1"/>
<TextBlock Background="White" Text="{Binding ElementName=labelWithBoxBackground, Path=Text}" Margin="0,20,0,0" Panel.ZIndex="2" HorizontalAlignment="Center" VerticalAlignment="Center" FontWeight="Bold" FontFamily="Calibri"/>
</Grid>
</UserControl>
后面的代码:
public partial class LabelWithBoxBackground : UserControl
{
public static readonly DependencyProperty TextProperty =
DependencyProperty.Register("Text", typeof(string), typeof(LabelWithBoxBackground), new FrameworkPropertyMetadata(string.Empty));
public string Text
{
get { return GetValue(TextProperty).ToString(); }
set { SetValue(TextProperty, value); }
}
public LabelWithBoxBackground()
{
InitializeComponent();
}
}
答案 0 :(得分:1)
使用完整的Resource File Pack URI,包括UserControl库的程序集名称(而不是名称空间):
Source="pack://application:,,,/SampleControls;component/Images/boxImage.png"
还要确保将图像文件的“生成操作”设置为“资源”。
请注意,此处设置Panel.ZIndex
是没有意义的。默认情况下,元素按照在XAML中声明的顺序堆叠,因此,即使不设置ZIndex,TextBlock也始终位于Image的顶部。