我在我的应用程序,我用来添加额外的联系人到本地数据库的飞出。此弹出窗口当前被声明为页面资源,并且完全按照我需要的方式进行声明,但是为了在不同的页面上重新使用它,我需要将xaml用于弹出窗口以及任何attatched事件复制到每个页面需要使用它(有几个地方可能需要添加一个联系人)应用程序广泛访问在UWP飞出
是否有一种全局定义弹出方式的方法,以便我只需要引用它而不是每次硬编码?我考虑使用ContentDialog
(因为它可以被定义为它自己的模块),但我认为这不是合适的
我在我的应用程序,我用来添加额外的联系人到本地数据库的飞出。此弹出窗口当前被声明为页面资源,并且完全按照我需要的方式进行声明,但是为了在不同的页面上重新使用它,我需要将xaml用于弹出窗口以及任何attatched事件复制到每个页面需要使用它(有几个地方可能需要添加一个联系人)应用程序广泛访问在UWP飞出
是否有一种全局定义弹出方式的方法,以便我只需要引用它而不是每次硬编码?我考虑使用ContentDialog
(因为它可以被定义为它自己的模块),但我认为这不是合适的
如果在代码中完全创建不是一个选项,您可以创建一个ResourceDictionary背景。首先Styles.xaml
:
<ResourceDictionary
x:Class="MyClass.Styles"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Flyout x:Key="MyFlyout">
<!-- my flyout code -->
</Flyout>
</ResourceDictionary>
这里最重要的是x:Class
,其中值必须(在这种情况下Styles.cs
)的命名空间+名称,我们现在正在创建的相关类:
namespace MyClass {
public partial class Styles {
public Styles() {
this.InitializeComponent();
}
// my events from flyout
}
}
确保该类声明为partial
,并在构造函数中调用this.InitializeComponent()
。
现在添加一个参考:
<Application
...
xmlns:myClass="using:MyClass">
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<myClass:Styles />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
</Application>
然后你就可以访问在弹出的静态资源,如:
<Button Flyout="{StaticResource MyFlyout}" />
我喜欢这种方法。我会尝试一下,如果它合适的话就标记出来 – Takarii
是否有一个理由,为什么你不能创建在C#代码中完全飞出?然后,您可以简单地创建一个返回Flyout的静态方法。 – schumi1331
@ schumi1331它是我考虑的事情,但它意味着重新创建布局。我希望重用已经写好的XAML – Takarii