Можно ли добавить правило привязки к элементу Silverlight? - PullRequest
0 голосов
/ 11 апреля 2009

Надеюсь, я правильно сформулировал вопрос. Если нет, позвольте мне объяснить. Я хочу связать свойство Source элемента Image со свойством ImageUrl моего объекта DataContext. Вот XAML:

<Image
    x:Name="EmployeeImage"
    Grid.Column="0"
    Grid.Row="0"
    Grid.RowSpan="2"
    Source="{Binding Path=ImageUrl}"
    Stretch="UniformToFill">
</Image>

Очевидно, что я могу просто выполнить привязку в выделенном фрагменте кода и выполнить там любые проверки, но есть ли способ декларативно предоставить альтернативный URL-адрес для источника изображения, если свойство ImageUrl является нулевым или пустым?

Редактировать: я добавил конвертер, который проверяет ImageUrl и возвращает путь по умолчанию, если он нулевой или пустой. Если есть другой способ, мне интересно это услышать.

Спасибо!

Ответы [ 3 ]

1 голос
/ 11 апреля 2009

Существует способ сделать это декларативно, но сначала вам нужно написать класс, производный от IValueConverter . Сделав это, вы можете использовать этот класс для выполнения любых проверок при вызове, когда активирована привязка Path.

XAML Пример:

<Image Source="{Binding Path=ImageUrl, Converter={StaticResource YourImagePathConverter}}"/>
1 голос
/ 11 апреля 2009

Почему бы просто не иметь объект, который вы связываете для обработки?

public string ImageURL
{
  get { return (_ImageURL != string.Empty) ? _ImageURL : _MyDefaultImageURL; }
}
0 голосов
/ 10 октября 2010

Source="{Binding Path=ImageUrl, FallbackValue=DefaultPathHere}" работает в WPF, но не уверен, что FallbackValue работает в Silverlight.

http://msdn.microsoft.com/en-us/library/system.windows.data.bindingbase.fallbackvalue.aspx

Небольшое исследование показывает, что FallbackValue доступен в Silverlight 4, но не в предыдущей версии.

...