Свойство источника изображения - Внутри DataTemplate и UserControl.Resources - Изображение из другой сборки - PullRequest
0 голосов
/ 04 октября 2011

Использование свойства источника изображения просто работает, если я не внутри DataTemplate. В противном случае он не сможет найти изображение, которое находится в другой сборке с именем «Изображения».

XAML, это работает. Я вижу изображение, которое содержит сборка «Изображения»:

<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 был найден», но я не вижу никакой картинки .. В чем здесь проблема?

Ответы [ 2 ]

0 голосов
/ 04 октября 2011

Не используйте ContentPresenter.Используйте ContentControl.

   <ContentControl Content="{Binding Path=IsAuthorized, Mode=OneWay}" 
                     VerticalAlignment="Center"/> 
0 голосов
/ 04 октября 2011

Вы сказали, что видите текстовое поле, как это может быть, ваш шаблон пуст, ваша StackPanel - просто ресурс в вашем шаблоне данных. Попробуйте удалить строки <DataTemplate.Resources> и </DataTemplate.Resources> или добавьте <!--simplyfied, Triggers removed...--->.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...