Заимствовано из https://stackoverflow.com/a/50863128/1264360
Try,
location /control-panel {
root /var/www/html/soundoff-admin-dev/dist;
try_files $uri $uri/ /control-panel/index.html;
}
Я создал маленький класс помощника с отдельным методом сделать обратный поиск, которого Вы требуете.
public static class ResourceHelper
{
static public string FindNameFromResource(ResourceDictionary dictionary, object resourceItem)
{
foreach (object key in dictionary.Keys)
{
if (dictionary[key] == resourceItem)
{
return key.ToString();
}
}
return null;
}
}
можно назвать его с помощью следующего
string name = ResourceHelper.FindNameFromResource(this.Resources, defaultStyle);
Каждый FrameworkElement
имеет свой собственный .Resources
словарь, с помощью 'этого' предполагает, что Вы находитесь в правильном месте для того, где MyTestStyle определяется. Если потребности - Вы, могло бы добавить больше методов к статическому классу для рекурсивного пересечения всех словарей в окне (приложение?)
Вероятно, не используя Объект стиля, но если Вы обходите агитацию в ResourceDictionary, содержащем Ваш стиль, можно получить x:Key.
Не ища словари ресурса, я не думаю, что это возможно, поскольку x:Key является частью грамматики разметки XAML и не имеет никакой уместности, когда у Вас есть ссылка на Стиль или DataTemplate или что-либо, что Вы получили.
Взгляните на документ MSDN о x:Key
Мне пришлось немного изменить приведенный выше пример, чтобы заставить его работать для меня, поскольку я использую MergedDictionaries. Если приведенный выше пример дает 0 результатов, попробуйте следующее:
//Called by FindNameFromResource(aControl.Style)
static public string FindNameFromResource(object resourceItem)
{
foreach (ResourceDictionary dictionary in App.Current.Resources.MergedDictionaries)
{
foreach (object key in dictionary.Keys)
{
if (dictionary[key] == resourceItem)
{
return key.ToString();
}
}
}
return null;
}