Привязка к UserControl.Resource из таблицы данных, созданной в коде (WPF) - PullRequest
0 голосов
/ 23 июня 2019

Я хочу сослаться на мой текст данных из таблицы данных.В XAML все работает нормально: я создаю BindingProxy, на который ссылаются как staticResource, из DataTemplate, и поэтому я могу получить доступ к обязательному свойству.привязка для LookupDictionary.Здесь я пытаюсь ссылаться на текстовый текст не из таблицы данных, а из окружающего UserControl.Это дает мне ошибку "Ресурс с именем" "DataContextProxy" "не может быть найден. Любой совет, как я мог решить эту проблему?

Private Function CreateDataTemplate(textblockName As String) As DataTemplate
    Dim memoryStream As MemoryStream
    Dim parserContext As New ParserContext()
    Dim xaml = "<DataTemplate xmlns:helpers=""clr-namespace:ViewModel.Helpers;assembly=ViewModel"">"
    xaml += "<DataTemplate.Resources>"
    xaml += "<helpers:ComboBoxPerformanceConverterVm x:Key=""AntriebsArtConverter""  LookupDictionary=""{Binding Path=Data.AntriebsArtenDict, Source={StaticResource DataContextProxy}}""/>"
    xaml += "</DataTemplate.Resources><TextBlock Text=""{Binding  Fahrzeug.AntriebsArtId, Converter={StaticResource AntriebsArtConverter}}"" /></DataTemplate>"
    memoryStream = New MemoryStream(Encoding.UTF8.GetBytes(xaml))
    parserContext.XmlnsDictionary.Add("", "http://schemas.microsoft.com/winfx/2006/xaml/presentation")
    parserContext.XmlnsDictionary.Add("x", "http://schemas.microsoft.com/winfx/2006/xaml")
    Dim dataTemplate = CType(XamlReader.Load(memoryStream, parserContext), DataTemplate)
    Return dataTemplate
End Function

Спасибо за вашу помощь заранее!

1 Ответ

0 голосов
/ 23 июня 2019

В вашем файле xaml helpers:ComboBoxPerformanceConverterVm определен снаружи, его «DataContext» является UserControl и знает DataContextProxy.

Но в коде вы переместили этот конвертер внутрь DataContext для этого конвертерасейчас: «Колонна».

Лучшее решение - переместить это определение конвертера за пределы того, что вы делали в Xaml.

...