Здесь довольно много вопросов о загрузке XAML во время выполнения, но насколько я могу судить, это не дубликат.
Я загружаю XAML в элемент управления во время выполнения:
<ContentControl Content="{Binding Layout.View, Converter={StaticResource StringToXamlConverter}}"/>
Преобразователь довольно прост:
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
string xaml;
if (value != null)
{
xaml = value.ToString();
}
else
{
xaml = Settings.Default.DefaultLayoutView;
}
var root = XamlReader.Parse(xaml);
return root;
}
Теперь в загружаемом XAML мне нужно использовать ValueConverters.Конвертеры определяются как ресурсы окна, в которое загружается XAML.Например:
<c:BooleanToVisibilityValueConverter x:Key="BooleanToVisibilityConverter"/>
Конечно, метод XamlReader.Parse () выдает исключение, если я пытаюсь использовать этот ресурс, поскольку на момент чтения он недоступен.
Visibility="{Binding Layout.TextItem1.IsEnabled, Converter={StaticResource BooleanToVisibilityConverter}}"
Есть ли способ обойти это?Возможно, способ заставить XamlReader игнорировать это?Или альтернатива ValueConverters, которая может работать в этой ситуации?
Обратите внимание, что использование DynamicResource также не работает.Они не могут использоваться для ValueConverters.