Вы можете написать собственный конвертер, чтобы позаботиться об этом.Класс Converter будет выглядеть следующим образом:
//''' <summary>
//''' Returns a Style based upon the text that is passed into the Convert
//''' function in the 'value' object.
//''' </summary>
//''' <remarks></remarks>
Public Class NameToStyleConverter
Implements IValueConverter
Public Function Convert(ByVal value As Object, ByVal targetType As System.Type, ByVal parameter As Object, ByVal culture As System.Globalization.CultureInfo) As Object Implements System.Windows.Data.IValueConverter.Convert
Dim styleName As String = CStr(value)
Dim styl As System.Windows.Style
styl = Application.Current.TryFindResource(styleName)
Return styl
End Function
Public Function ConvertBack(ByVal value As Object, ByVal targetType As System.Type, ByVal parameter As Object, ByVal culture As System.Globalization.CultureInfo) As Object Implements System.Windows.Data.IValueConverter.ConvertBack
Throw New NotImplementedException("This method or operation is not implemented.")
End Function
End Class
В XAML для вашего окна вы получите следующее:
<Window.Resources>
<local:NameToStyleConverter x:Key="NameToStyleConverter"/>
</Window.Resources>
, где 'local' - это определенное пространство имен для вашего приложения..
Реализация может выглядеть так:
Style="{Binding Path=MyStyleNameText, Converter={StaticResource NameToStyleConverter}"
Или, опционально, вы всегда можете обратиться к конвертеру из кода.Вы передаете строку, и она возвращает стиль.