【问题标题】:Changing GridView Item height using VSM Triggers使用 VSM 触发器更改 GridView 项目高度
【发布时间】:2015-10-28 16:33:45
【问题描述】:

我目前正在开发一个 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 Setter 中更改此属性值。我尝试在上面的代码中将x:Name 属性附加到Setter,但是当我在VisualState Setter 中引用此名称时它不起作用。

有没有办法在 XAML 中完成这项工作?

【问题讨论】:

    标签: c# wpf xaml gridview


    【解决方案1】:

    我没有用过VSM,但是你有没有尝试过将需要切换的各种样式声明为资源,并在setter中将GridView的样式分配给正确的资源?

    <!-- 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>
    

    【讨论】:

    • 完美解决方案,没想到有多种样式
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-23
    • 1970-01-01
    • 1970-01-01
    • 2020-11-25
    • 1970-01-01
    相关资源
    最近更新 更多