Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > WPF и Silverlight > Загрузка изображения по относительному пути


Автор: ViterAlex 4.9.2010, 21:44
Изображение связано со свойством кнопки Tag:
Код

…
      <Image x:Name='ClockMinuteHandPreview'
             Source='{Binding ElementName=BrowseMinuteHand, Path=Tag}'
             Style='{StaticResource ClockHandImgStyle}' >
        <Image.RenderTransform>
          <RotateTransform Angle='0'></RotateTransform>
        </Image.RenderTransform>
      </Image>
…

Кнопка такая:
Код

    <Button Style='{StaticResource BrowseButtonStyle}'
            x:Name='BrowseMinuteHand'
            Grid.Row='9'
            Grid.Column='2'
            Click='BrowseButtonClick'/>

Выбираю файл:
Код

  Private Sub BrowseButtonClick(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs)
    Dim ofd As New Microsoft.Win32.OpenFileDialog
    Dim ur As New System.Uri(My.Application.Info.DirectoryPath & "\")
    With ofd
      .InitialDirectory = My.Application.Info.DirectoryPath
      .Multiselect = False
      .Filter = "Изображения|*.png;*.jpg"
      If .ShowDialog Then
        DirectCast(sender, Button).Tag = ur.MakeRelative(New Uri(.FileName))
      End If
    End With
  End Sub

Т.е. при изменении Tag должна меняться картинка. Таких кнопок несколько, картинок, соответственно, тоже. Так вот, если указать файл, который лежит глубже или в той же директории что экзешник, то картинка грузится. Но если указать файл выше, когда относительный путь выглядит как-то так: "../../images/cronometer.png", то картинка не грузится, а выдаётся ошибка:
Цитата

System.Windows.Data Error: 6 : 'ObjectSourceConverter' converter failed to convert value '../../images/cronometer.png' (type 'String'); fallback value will be used, if available. BindingExpression:Path=Tag; DataItem='Button' (Name='BrowseClockFace'); target element is 'Image' (Name='ClockFacePreview'); target property is 'Source' (type 'ImageSource') IOException:'System.IO.IOException: Не удается найти ресурс "images/cronometer.png".

Как быть? Почему не воспринимает путь?

Автор: jonie 5.9.2010, 12:29
потому что 
Код

<Image>
    <Image.Source>
        <BitmapImage UriSource="C:\someimage.png" CacheOption="OnLoad" />
    </Image.Source>
</Image>

надо так вроде бы...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)