2012-02-19 2 views
0

У меня есть несколько ситуаций, когда я пытаюсь предоставить строго типизированную разметку XAML для поиска ресурса для определенного объекта и применять его как привязку к имущество. Например, поиск ImageSources на основе текущего DataContext. Или на основе новой привязки.Предоставление ресурса для свойства на основе текущего привязки данных

Например, я хотел бы получить разметку несколько, как это работает:

<Style> 
    <Style.Setters> 
     <Setter 
      Property="DefaultImageSource" 
      Value="{ns:ImageSourceForObject Path}" /> 
    </Style.Setters> 
</Style> 

НШ: ImageSourceForObject будет работать много, как у Binding, в конечном счете, разрешающий конкретный экземпляр. Затем он будет искать ресурс ImageSource, связанный с этим экземпляром.

Основная проблема, с которой я столкнулась, - это выяснить, как на самом деле разрешить ресурс внутри ProvideValue. Кажется, что нет способа получить ссылку на элемент FrameworkElement.

У меня такая же проблема внутри ValueConverter.

ответ

0

По MSDN: отчеты

IProvideValueTarget ссылку на объект и свойство идентификатор из контекста, в котором расширение разметки используется

Таким образом, я ожидал бы вы сделать что-то вроде этого :

var provideValueTarget = (IProvideValueTarget)serviceProvider.GetService(typeof(IProvideValueTarget)); 
var valueTarget = provideValueTarget.TargetObject as FrameworkElement; 

if (valueTarget == null) 
{ 
    // or maybe throw 
    return null; 
} 

var resource = valueTarget.FindResource("whatever"); 

// etc. 
+0

Я не верю, что это работает внутри установщика стиля. – wasabi

Смежные вопросы