У меня есть следующий app.xaml:Установка вложенное свойство в App.xaml
<BaseApp x:Class ="MyApp"
xmlns ="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x ="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local ="clr-namespace:MyApp"
Props.MyCustom="test"
Startup ="Application_Startup"
>
<Application.Resources >
< ResourceDictionary>
...
</ ResourceDictionary>
</Application.Resources>
то мне нужно, чтобы быть в состоянии прочитать свойство от базового приложения:
public partial class BaseApp : Application
{
static void MyFunc()
{
// Access property from here
var myvar = Props.MyCustom
}
}
В настоящее время я работаю над убеждением, что это должно быть в отдельном классе, а именно:
public class Props : DependencyObject
{
public string MyCustom
{
get { return (string)GetValue(MyCustomProperty); }
set { SetValue(MyCustomPropertyKey, value); }
}
public static readonly DependencyPropertyKey MyCustomPropertyKey =
DependencyProperty.RegisterAttachedReadOnly("MyCustom" , typeof (string), typeof (Props), new UIPropertyMetadata (0));
public static readonly DependencyProperty MyCustomProperty = MyCustomPropertyKey.DependencyProperty;
}
Я правильно подхожу к этому, и если да, то что мне нужно сделать, чтобы иметь доступ к этому из app.xaml?
EDIT:
Для будущих путешественников, как я, наконец, удался это было просто объявить абстрактное свойство только для чтения в базовом классе и переопределить его в коде позади. Не такой аккуратный, как мне бы хотелось, но он работает.
Вы говорите, что это невозможно сделать с прикрепленными свойствами или что это невозможно сделать вообще? –
Точно. Прикрепленные свойства - это свойства зависимостей и поэтому могут быть заданы только экземплярами классов, которые происходят из 'DependencyObject'. – Clemens
Тогда это возвращает меня к первоначальному вопросу: «Я подхожу к этому правильно?» Есть ли другой способ добиться того же? –