我目前正在处理一个WPF应用程序,并且我有一个GridView显示来自预先填充的集合的项:
<GridView x:Name="GridContainer" ... ItemsSource="{Binding ProfItemCollection}">
<GridView.ItemTemplate>
<DataTemplate>
<local:ProfItem />
</DataTemplate>
</GridView.ItemTemplate>
</GridView>我还有一个,它具有基于窗口大小的触发器:
<VisualStateManager.VisualStateGroups>
<VisualStateGroup>
<VisualState x:Name="NarrowState">
<VisualState.StateTriggers>
<AdaptiveTrigger MinWindowWidth="300" MinWindowHeight="300"/>
</VisualState.StateTriggers>
<VisualState.Setters>
...
...
</VisualState.Setters>
</VisualState>
...
...
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>我希望从这些可视状态中更改GridView项的高度。我很难做到这一点.我知道我可以通过在GridView控件中执行以下操作来改变高度:
<GridView.ItemContainerStyle>
<Style TargetType="GridViewItem">
<Setter Property="Height" Value="100" />
</Style>
</GridView.ItemContainerStyle>但是,我不知道如何在VisualState设置器中更改这个属性值。我尝试在上面的代码中将一个x:Name属性附加到设置程序,但是当我在VisualState设置器中引用这个名称时,它不起作用。
有什么方法可以在XAML中实现这一点吗?
发布于 2015-08-05 23:13:54
我没有使用VSM,但是您是否尝试声明需要在as资源之间切换的各种样式,并将GridView的样式分配给setter中的正确资源?
<!-- In resources section -->
<Style x:Key="smallGVStyle" TargetType="GridViewItem">
<Setter Property="Height" Value="100" />
</Style>
<Style x:Key="mediumGVStyle" TargetType="GridViewItem">
<Setter Property="Height" Value="300" />
</Style>
<!-- VSM -->
<VisualStateManager.VisualStateGroups>
<VisualStateGroup>
<VisualState x:Name="NarrowState">
<VisualState.StateTriggers>
<AdaptiveTrigger MinWindowWidth="300" MinWindowHeight="300"/>
</VisualState.StateTriggers>
<VisualState.Setters>
<Setter TargetName="GridContainer" Property="ItemContainerStyle" Value="{StaticResource ResourceKey=smallGVStyle}"/> ...
</VisualState.Setters>
</VisualState>
...
...
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>https://stackoverflow.com/questions/31840317
复制相似问题