如何在 uwp 中使用带有内容对话控件的 VisualStateManager
How to use VisualStateManager with content Dialogue control in uwp
有什么方法可以在 uwp 应用程序中使用带有内容对话控件的 visualStateManager。
将你所有的popUp控件放到控件中如下:
`<Grid Background="White">
<VisualStateManager.VisualStateGroups>
<VisualStateGroup>
<VisualState>
<VisualState.StateTriggers>
<AdaptiveTrigger MinWindowWidth="1000" />
</VisualState.StateTriggers>
<VisualState.Setters>
</VisualState.Setters>
</VisualState>
<VisualState>
<VisualState.StateTriggers>
<AdaptiveTrigger MinWindowWidth="750" />
</VisualState.StateTriggers>
<VisualState.Setters>
<Setter Target="BlueRect.Visibility" Value="Visible" />
<Setter Target="RedRect.Visibility" Value="Collapsed" />
</VisualState.Setters>
</VisualState>
<VisualState>
<VisualState.StateTriggers>
<AdaptiveTrigger MinWindowWidth="500" />
</VisualState.StateTriggers>
<VisualState.Setters>
<Setter Target="BlueRect.Visibility" Value="Collapsed" />
<Setter Target="RedRect.Visibility" Value="Visible" />
</VisualState.Setters>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<StackPanel>
<Rectangle x:Name="BlueRect" Width="50" Height="50" Fill="Blue" />
<Rectangle x:Name="RedRect" Width="50" Height="50" Fill="Red" />
<Button Content="Change Style" Width="500" Height="30" HorizontalAlignment="Center" VerticalAlignment="Bottom" Click="Button_Click" />
</StackPanel>
</Grid>`
将用户控件的事件传递给contentdialog,如果有:
`public sealed partial class MyUserControl1 : UserControl
{
public delegate void MyEventHandler(object source, EventArgs e);
public static event MyEventHandler OnNavigateParentReady;
public MyUserControl1()
{
this.InitializeComponent();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
OnNavigateParentReady(sender,null);
}
}`
创建 contentDialog 控件并使用创建的用户控件,如下所示:
` <Grid >
<local:MyUserControl1 />
</Grid>`
现在处理contentDialog上用户控件的传输事件如下:
`public sealed partial class ContentDialog1 : ContentDialog
{
public ContentDialog1()
{
this.InitializeComponent();
MyUserControl1.OnNavigateParentReady += test;
}
private void test(object source, EventArgs e)
{
Button bt = (Button)source;
if (bt.IsEnabled == true)
{
this.Hide();
}
}
}`
现在只需从您想要的地方调用您的 popUp(contentDialog) to.I 调用按钮单击事件,如图所示:
` ContentDialog1 popup = new ContentDialog1() { };
public uc_test()
{
this.InitializeComponent();
}
private async void Button_Click_1(object sender, RoutedEventArgs e)
{
await popup.ShowAsync();
}`
对我来说效果很好,并帮助我创建了一个响应式弹出窗口,因为它会应用您在主要 window 收缩时应用到用户控件上的所有触发器。
谢谢。
有什么方法可以在 uwp 应用程序中使用带有内容对话控件的 visualStateManager。
将你所有的popUp控件放到控件中如下:
`<Grid Background="White">
<VisualStateManager.VisualStateGroups>
<VisualStateGroup>
<VisualState>
<VisualState.StateTriggers>
<AdaptiveTrigger MinWindowWidth="1000" />
</VisualState.StateTriggers>
<VisualState.Setters>
</VisualState.Setters>
</VisualState>
<VisualState>
<VisualState.StateTriggers>
<AdaptiveTrigger MinWindowWidth="750" />
</VisualState.StateTriggers>
<VisualState.Setters>
<Setter Target="BlueRect.Visibility" Value="Visible" />
<Setter Target="RedRect.Visibility" Value="Collapsed" />
</VisualState.Setters>
</VisualState>
<VisualState>
<VisualState.StateTriggers>
<AdaptiveTrigger MinWindowWidth="500" />
</VisualState.StateTriggers>
<VisualState.Setters>
<Setter Target="BlueRect.Visibility" Value="Collapsed" />
<Setter Target="RedRect.Visibility" Value="Visible" />
</VisualState.Setters>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<StackPanel>
<Rectangle x:Name="BlueRect" Width="50" Height="50" Fill="Blue" />
<Rectangle x:Name="RedRect" Width="50" Height="50" Fill="Red" />
<Button Content="Change Style" Width="500" Height="30" HorizontalAlignment="Center" VerticalAlignment="Bottom" Click="Button_Click" />
</StackPanel>
</Grid>`
将用户控件的事件传递给contentdialog,如果有:
`public sealed partial class MyUserControl1 : UserControl
{
public delegate void MyEventHandler(object source, EventArgs e);
public static event MyEventHandler OnNavigateParentReady;
public MyUserControl1()
{
this.InitializeComponent();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
OnNavigateParentReady(sender,null);
}
}`
创建 contentDialog 控件并使用创建的用户控件,如下所示:
` <Grid >
<local:MyUserControl1 />
</Grid>`
现在处理contentDialog上用户控件的传输事件如下:
`public sealed partial class ContentDialog1 : ContentDialog
{
public ContentDialog1()
{
this.InitializeComponent();
MyUserControl1.OnNavigateParentReady += test;
}
private void test(object source, EventArgs e)
{
Button bt = (Button)source;
if (bt.IsEnabled == true)
{
this.Hide();
}
}
}`
现在只需从您想要的地方调用您的 popUp(contentDialog) to.I 调用按钮单击事件,如图所示:
` ContentDialog1 popup = new ContentDialog1() { };
public uc_test()
{
this.InitializeComponent();
}
private async void Button_Click_1(object sender, RoutedEventArgs e)
{
await popup.ShowAsync();
}`
对我来说效果很好,并帮助我创建了一个响应式弹出窗口,因为它会应用您在主要 window 收缩时应用到用户控件上的所有触发器。
谢谢。