如何访问 Windows 通用应用程序中的 App.Current 属性
How to access App.Current properties in Windows Universal Apps
我正在尝试绑定到我的视图中的 App.Current.XYZ
属性,但这似乎不可能,这是我所拥有的示例:
sealed partial class App : Application
{
public MyClassType MyClass { get; private set; }
...
这是视图:
<Page ...
DataContext="{Binding MyClass, Source={x:Static Application.Current}}">
所以,这是不可能的,因为 Windows Universal(或 WinRT)不再支持 x:Static
,所以我尝试通过 [=] 公开应用程序 属性 34=] 在 代码隐藏 中,像这样:
public MyClassType MyClass
{
get
{
return Application.Current.MyClass;
}
}
这也不行! MyClass
没有智能感知,完全没有。我也试过 App.Current
但还是不行。
知道为什么我的 属性 无法通过 Application.Current.
看到吗?或者如果有什么方法可以直接通过 XAML?
绑定到这个 属性
以下内容可能对您有用:
创建两个 classes:
public class MyDataProvider
{
private static readonly MyDataContainer _myDataContainer = new MyDataContainer();
public MyDataContainer MyDataContainer { get { return _myDataContainer; } }
}
public class MyDataContainer
{
public MyClassType MyClass { get; private set; }
...
}
然后在App.xaml定义这个静态资源:
<resources:MyDataProvider x:Key="MyDataProvider"/>
现在您应该可以在 XAML 代码中像这样使用数据绑定了:
Attribute="{Binding MyDataContainer.MyClass, Source={StaticResource MyDataProvider}}"
在您的情况下,您可以调整代码,使 MyDataContainer 实际上是您的应用程序:
public class MyDataProvider
{
public Application App { get { return Application.Current; } }
}
并像这样编写数据绑定:
Attribute="{Binding App.MyClass, Source={StaticResource MyDataProvider}}"
但一般来说,我不会使用 App class 作为数据绑定源的提供者。为了分离关注点,我会使用类似上面的 MyDataProvider 和 MyDataContainer
您需要像这样将 Application.Current 转换为您的类型:
public MyClassType MyClass
{
get
{
return ((App)Application.Current).MyClass;
}
}
我正在尝试绑定到我的视图中的 App.Current.XYZ
属性,但这似乎不可能,这是我所拥有的示例:
sealed partial class App : Application
{
public MyClassType MyClass { get; private set; }
...
这是视图:
<Page ...
DataContext="{Binding MyClass, Source={x:Static Application.Current}}">
所以,这是不可能的,因为 Windows Universal(或 WinRT)不再支持 x:Static
,所以我尝试通过 [=] 公开应用程序 属性 34=] 在 代码隐藏 中,像这样:
public MyClassType MyClass
{
get
{
return Application.Current.MyClass;
}
}
这也不行! MyClass
没有智能感知,完全没有。我也试过 App.Current
但还是不行。
知道为什么我的 属性 无法通过 Application.Current.
看到吗?或者如果有什么方法可以直接通过 XAML?
以下内容可能对您有用:
创建两个 classes:
public class MyDataProvider
{
private static readonly MyDataContainer _myDataContainer = new MyDataContainer();
public MyDataContainer MyDataContainer { get { return _myDataContainer; } }
}
public class MyDataContainer
{
public MyClassType MyClass { get; private set; }
...
}
然后在App.xaml定义这个静态资源:
<resources:MyDataProvider x:Key="MyDataProvider"/>
现在您应该可以在 XAML 代码中像这样使用数据绑定了:
Attribute="{Binding MyDataContainer.MyClass, Source={StaticResource MyDataProvider}}"
在您的情况下,您可以调整代码,使 MyDataContainer 实际上是您的应用程序:
public class MyDataProvider
{
public Application App { get { return Application.Current; } }
}
并像这样编写数据绑定:
Attribute="{Binding App.MyClass, Source={StaticResource MyDataProvider}}"
但一般来说,我不会使用 App class 作为数据绑定源的提供者。为了分离关注点,我会使用类似上面的 MyDataProvider 和 MyDataContainer
您需要像这样将 Application.Current 转换为您的类型:
public MyClassType MyClass
{
get
{
return ((App)Application.Current).MyClass;
}
}