2012-05-17 3 views
0

Я работаю с несколькими мультирегуляторами в соответствии с this posting. Ниже указаны привязка и ошибка.Ошибка DataTrigger

Я использую настраиваемое расширение разметки, чтобы отобразить изображение ресурса, чтобы оно могло быть подозрительным, но я так не думаю, так как раньше я использовал его в стилях.

В сообщении об ошибке говорится, что я применяю неправильное свойство для типа, и пока не вижу причины.

Cheers,
Berryl

запускает

<Style x:Key="AvatarPathImageStyle" TargetType="{x:Type Image}"> 
    <Setter Property="Source" Value="{Binding AvatarPath}"/> 
    <Setter Property="Height" Value="96"/> 
    <Setter Property="Width" Value="96"/> 
    <Setter Property="Stretch" Value="UniformToFill"/> 
    <Style.Triggers> 

     <MultiDataTrigger> 
      <MultiDataTrigger.Conditions> 
       <Condition Binding="{Binding AvatarPath}" Value="{x:Null}" /> 
       <Condition Binding="{Binding Gender}" Value="{x:Static domain:Gender.Female}"/> 
      </MultiDataTrigger.Conditions> 
      <Setter Property="Source" Value="{resx:Resx ResxName=Smack.Parties.Presentation.Resources.PersonDetailView, Key=Img_Female}"/> 
     </MultiDataTrigger> 

     <MultiDataTrigger> 
      <MultiDataTrigger.Conditions> 
       <Condition Binding="{Binding AvatarPath}" Value="{x:Null}" /> 
       <Condition Binding="{Binding Gender}" Value="{x:Static domain:Gender.Male}"/> 
      </MultiDataTrigger.Conditions> 
      <Setter Property="Source" Value="{resx:Resx ResxName=Smack.Parties.Presentation.Resources.PersonDetailView, Key=Img_Male}"/> 
     </MultiDataTrigger> 
     </MultiDataTrigger> 

    </Style.Triggers> 
</Style> 

связывание

<Image Grid.Column="1" Grid.Row="4" 
     HorizontalAlignment="Center" Margin="10, 0" Style="{StaticResource AvatarPathImageStyle}" 
     /> 

ошибка

System.Windows.Markup.XamlParseException occurred 
... InnerException: System.ArgumentException 
     Message='System.Windows.Controls.Image' is not a valid value for the 'System.Windows.Controls.Image.Source' property on a Setter. 
... 

обновление

Доступ изображения статический также получает Invalid ошибки типа:

<Setter Property="Source" Value="{x:Static imgResources:PersonDetailView.Img_Female}"/> 
+0

Какой тип вашего расширения разметки возвращается? –

+0

@Steve Greatrex. BitmapSource – Berryl

+0

@Steve Greatrex. Я получаю недопустимый тип, когда я слишком часто получаю обратное изображение resx (см. Отредактированный пост). – Berryl

ответ

1

Комментария преобразуется в ответ:

причиной для ошибки в том, что изображения, сохраненные в Resx файл, типа System.Windows.Drawing.Image, которые напрямую не совместимы с WPF. Вы можете написать конвертер, но если у вас нет веских причин для использования ресурсного словаря, я бы просто вставлял изображения и ссылался на них по URL-адресу относительно файла XAML.

+0

Я действительно хотел, чтобы изображения были из resx, и у меня уже был код конверсии, поэтому использование конвертера было для него способом. ура – Berryl