在用户控件中混合不渲染图像

时间:2009-10-12 18:14:41

标签: wpf image user-controls expression-blend resources

我正在开发一个WPF应用程序,并且我创建了一个名为ViewIconUC的用户控件。此控件存在于程序集(MyControlAssemblyUI)中。我可以在这个控件的ZAML页面中实例化控件,我没有错误(我甚至将dugger连接到Blend来检查),我可以看到我在控件中设置的按钮背景,但我分配给的图标文件我的控制没有出现。我在另一个程序集(MyAssembly)中使用该控件。当我将此程序集的项目加载到Blend时,获得相同的行为。但是,当我实际运行应用程序时,图标显示就像它应该的那样。所以它似乎是Blend的一个问题。有关如何在Blend中显示某些内容的任何建议吗?

控件的XAML是:

<UserControl
  x:Class="MyStuff.MyControlAssemblyUI.ViewIconUC"

  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
  xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"

  x:Name="m_ViewIconUC"
  Height="36" Width="42"
>

  <UserControl.Resources>
    <Style TargetType="Button">
      <Setter Property="Background" Value="#40FFFFFF"/>
    </Style>
    <Style TargetType="Image">
       <Setter Property="Width" Value="32" />
       <Setter Property="Height" Value="32" />
    </Style>
  </UserControl.Resources>

  <Button x:Name="m_ViewIconUC_Button">
    <Image 
      x:Name="m_ViewIconUC_Image"
      Source="{Binding ElementName=m_ViewIconUC, Path=IconFile}"
    />
  </Button>

</UserControl>

以下是MyControlAssemblyUI程序集中XAML页面中的实例化:

  <Grid>
      <MyControlAssemblyUI:ViewIconUC
         x:Name="m_TestToolBtn"
         IconFile="/Resources/Images/MyAppIcon32x32.png" />
  </Grid>

我在实际应用程序(MyAssembly)中的实例化如下所示:

<MyControlAssemblyUI:ViewIconUC
  x:Name="m_SelectToolBtn"
  IconFile="/Resources/Images/SelectTool-32.png" />

除非有人提出要求,否则我不会附加代码隐藏。

1 个答案:

答案 0 :(得分:1)

问题是客户端中的IconFile字符串有一个前导斜杠。我将其更改为以下内容,一切正常。

<MyControlAssemblyUI:ViewIconUC
  x:Name="m_SelectToolBtn"
  IconFile="Resources/Images/SelectTool-32.png" />