2011-10-04 66 views
0

如果我不在DataTemplate中,使用圖像源屬性即可。 否則,他無法找到名爲「Images」的另一個程序集中的圖片。圖像源屬性 - 內部DataTemplate和UserControl.Resources - 來自不同程序集的圖像

XAML,工作。我可以看到圖像,holded者通過「影像」組件:

<UserControl x:Class="Views.ViewUserInfo" 
      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" 
      mc:Ignorable="d"    
      d:DesignHeight="300" d:DesignWidth="600"> 

    <StackPanel Orientation="Horizontal"> 
     <StackPanel Orientation="Horizontal" Margin="0,5,0,5"> 
      <TextBlock Text="Authorized: "/> 
      <TextBlock Text="{Binding Path=IsAuthorized, Mode=OneWay}" VerticalAlignment="Center"/> 
      <Image Width="16" Height="16" Source="/Images;Component/Img16/Ok.png" /> 
     </StackPanel> 
    </StackPanel> 
</UserControl> 

不起作用:

<UserControl x:Class="Views.ViewUserInfo" 
      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" 
      mc:Ignorable="d"    
      d:DesignHeight="300" d:DesignWidth="600"> 

    <UserControl.Resources> 
     <DataTemplate DataType="{x:Type System:Boolean}"> 
      <StackPanel Orientation="Horizontal"> 
       <TextBlock Text="DataTemplate has been found " /> 
       <Image Width="16" Height="16" Source="/Images;Component/Img16/Ok.png" /> 
      </StackPanel> 
      <DataTemplate.Resources> 
       <!--simplyfied, Triggers removed...---> 
      </DataTemplate.Resources> 
     </DataTemplate> 
    </UserControl.Resources> 

    <StackPanel Orientation="Horizontal"> 
     <StackPanel Orientation="Horizontal" Margin="0,5,0,5"> 
      <TextBlock Text="Authorized: "/> 
      <ContentPresenter Content="{Binding Path=IsAuthorized, Mode=OneWay}" VerticalAlignment="Center"/> 
      <!--IsAuthorized.GetType() = typeof(System.Boolean)--> 
     </StackPanel> 
    </StackPanel> 
</UserControl> 

他實際上是在DataTemplate中,因爲他讓我看到文本「DataTemplate中已經發現」但我看不到任何圖片.. 這裏有什麼問題?

回答

0

你說你看到文本框,怎麼可能,你的模板是空的,你的StackPanel只是你的DataTemplate中的一個資源。嘗試刪除<DataTemplate.Resources></DataTemplate.Resources>行,或者添加您的<!--simplyfied, Triggers removed...--->

+0

對不起,我的確是不好的複製和粘貼;)xaml被糾正了。 的內容並不重要,即使我刪除了整個部分,我也只能看到TextBlock。 – Christian

0

不使用ContentPresenter。使用ContentControl。

<ContentControl Content="{Binding Path=IsAuthorized, Mode=OneWay}" 
        VerticalAlignment="Center"/>