2016-02-19 8 views
2

У меня есть шаблон для управления элементами, показанный ниже. Мне нужны отдельные экземпляры colorProvider для каждого элемента в шаблоне. Каждому элементу элемента управления элементам требуется отдельный экземпляр поставщика цветов в зависимости от предмета, к которому он привязан. Как создать несколько копий staticresource, чтобы staticresource был доступен только для этого элемента.создать несколько копий staticresource

+0

colorProvider ресурс никогда не используется в вашем коде. Опишите, как вы планируете использовать этот ресурс. –

+0

На это ссылается шаблон, который будет загружен в contentpresenter. однако в качестве обходного пути мне удалось использовать объект тега управления, чтобы вернуть ссылку на данные, которые должны были инициализировать colorprovider. – TrustyCoder

+0

Звучит как [x: Shared = "False"] (https://msdn.microsoft.com/en-us/library/aa970778%28v=vs.110%29.aspx) case. – icebat

ответ

3

Чтобы вернуть новый экземпляр статического ресурса каждый раз, когда он запрошен, вы можете использовать атрибут x:Shared. Это задокументировано на MSDN. Из моего опыта использования этого атрибута вы будете не получить поддержку Intellisense при попытке установить его. В вашем случае атрибут должен быть установлен на ColorProvider в разделе «Ресурсы» следующим образом.

<ContentPresenter Content="{Binding }" ContentTemplateSelector="{StaticResource chartSelector}"> 
    <ContentPresenter.Resources> 
    <v:ColorProvider x:Key="colorProvider" x:Shared=false /> 
    </ContentPresenter.Resources> 
</ContentPresenter> 
+0

Отлично! Это работает, и вы были правы и в отношении intellisense! – florien

0

Если значение ресурса зависит от данных, вы должны использовать привязку в сочетании с конвертером значений, который возвращает цвет.

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

  • Нет связанных вопросов^_^