Responsive design UWP/WinRT:是否可以使用AdaptiveTrigger更改样式?

Responsive design UWP/WinRT:是否可以使用AdaptiveTrigger更改样式?,responsive-design,windows-runtime,uwp,Responsive Design,Windows Runtime,Uwp,我试图使它,当窗口下降到一定大小以下时,按钮的大小缩小 以下是我的风格代码: <Style x:Key="AppBarButtonStyle" TargetType="AppBarButton"> <Setter Property="Width" Value="68"/> </Style> 当窗口降到720像素以下时,如何使所有的AppBarButtons变为64宽度?这应该很容易,但不确定您是否可以设置常规样式,或者是否仅限于命名元素,因此我将

我试图使它,当窗口下降到一定大小以下时,按钮的大小缩小

以下是我的风格代码:

<Style x:Key="AppBarButtonStyle" TargetType="AppBarButton">
    <Setter Property="Width" Value="68"/>
</Style>


当窗口降到720像素以下时,如何使所有的
AppBarButtons
变为64宽度?

这应该很容易,但不确定您是否可以设置常规样式,或者是否仅限于命名元素,因此我将创建一个visualstatemanager,首先执行此操作,然后进一步探索我的选项:

<VisualStateManager.VisualStateGroups>
            <VisualStateGroup x:Name="WindowStates">
                <VisualState x:Name="WideState">
                    <VisualState.StateTriggers>
                        <AdaptiveTrigger MinWindowWidth="720" />
                    </VisualState.StateTriggers>
                    <VisualState.Setters>
                        <Setter Target="Button1.Width" Value="100" />                        
                    </VisualState.Setters>
                </VisualState>
                <VisualState x:Name="NarrowState">
                    <VisualState.StateTriggers>
                        <AdaptiveTrigger MinWindowWidth="0" />
                    </VisualState.StateTriggers>
                    <VisualState.Setters>
                        <Setter Target="Button1.Width" Value="68" />
                    </VisualState.Setters>
                </VisualState>
            </VisualStateGroup>
        </VisualStateManager.VisualStateGroups>
    </Grid>
</Page>

这应该很简单,不确定您是否可以设置常规样式,或者您是否仅限于命名元素,因此我将创建一个visualstatemanager,首先执行此操作,然后进一步探索我的选项:

<VisualStateManager.VisualStateGroups>
            <VisualStateGroup x:Name="WindowStates">
                <VisualState x:Name="WideState">
                    <VisualState.StateTriggers>
                        <AdaptiveTrigger MinWindowWidth="720" />
                    </VisualState.StateTriggers>
                    <VisualState.Setters>
                        <Setter Target="Button1.Width" Value="100" />                        
                    </VisualState.Setters>
                </VisualState>
                <VisualState x:Name="NarrowState">
                    <VisualState.StateTriggers>
                        <AdaptiveTrigger MinWindowWidth="0" />
                    </VisualState.StateTriggers>
                    <VisualState.Setters>
                        <Setter Target="Button1.Width" Value="68" />
                    </VisualState.Setters>
                </VisualState>
            </VisualStateGroup>
        </VisualStateManager.VisualStateGroups>
    </Grid>
</Page>

我们在您的另一个问题中讨论了这一点,您的
AppBarSeparator
是在Pivot的数据模板中生成的

您仍然可以使用带有转换器的数据绑定来完成此操作,如果窗口的大小在运行时是可变的,您可能还需要使用
INotifyPropertyChanged
接口来完成数据源类

例如:


其他内容与我在你最后一个问题中的回答相同。这里的
WidthConverter
是这样的:

公共类宽度转换器:IValueConverter
{
公共对象转换(对象值、类型targetType、对象参数、字符串语言)
{
双宽度=(双?)值;

如果(width我们在您的另一个问题中讨论过这一点,那么您的
AppBarSeparator
将在Pivot的数据模板中生成

您仍然可以使用带有转换器的数据绑定来完成此操作,如果窗口的大小在运行时是可变的,您可能还需要使用
INotifyPropertyChanged
接口来完成数据源类

例如:


其他内容与我在上一个问题中的回答相同。此处的
WidthConverter
如下所示:

公共类宽度转换器:IValueConverter
{
公共对象转换(对象值、类型targetType、对象参数、字符串语言)
{
双宽度=(双?)值;

如果(宽度-因此有必要单独处理使用样式的每个项目的宽度,并且不可能直接更改样式以更干净的方式更改所有同时使用样式的项目?@WilliamJones,我想不出任何干净的方法来处理此问题。也许还有其他更简单的方法,但无论如何都应该在代码隐藏中完成。因此,有必要单独处理使用样式的每个项目的宽度,并且不可能直接更改样式以更干净的方式更改所有一起使用样式的项目?@WilliamJones,我想不出任何干净的方法来管理它。也许还有其他更简单的方法,但无论如何都应该在代码隐藏中完成。