【问题标题】:Horizontally Stretch Content in an ItemsControl在 ItemsControl 中水平拉伸内容
【发布时间】:2013-11-19 16:00:01
【问题描述】:

我有一个 itemscontrol,但是,这些项目是向左对齐的,我不知道如何水平拉伸它们。

这是我的 XAML:

    <ItemsControl x:Name="ItemsSnaps" ItemsSource="{Binding}" HorizontalContentAlignment="Stretch">
    <ItemsControl.ItemsPanel>
        <ItemsPanelTemplate>
            <StackPanel Orientation="Vertical" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">

            </StackPanel>
        </ItemsPanelTemplate>
    </ItemsControl.ItemsPanel>
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <Button x:Name="ButtonSnap" HorizontalAlignment="Stretch" Style="{StaticResource EmptyItemSourceAction}" Tag="{Binding}" 
                    toolkit:TiltEffect.IsTiltEnabled="{Binding Converter={StaticResource IValueCheckIfSnapWasRecieved}}"
                    Click="ButtonSnap_Click" 
                    ManipulationCompleted="ButtonSnap_ManipulationCompleted" 
                    ManipulationStarted="ButtonSnap_ManipulationStarted">
                <Grid Tag="{Binding}" Height="80">
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="80" />
                        <ColumnDefinition Width="*" />
                        <ColumnDefinition Width="60" />
                    </Grid.ColumnDefinitions>

                    <Image Grid.Column="0" Source="{Binding Converter={StaticResource IValueIconFromSnapMediaType}}" Margin="10" Stretch="UniformToFill" />

                    <StackPanel Grid.Column="1" VerticalAlignment="Center">
                        <StackPanel Orientation="Horizontal">
                            <TextBlock Foreground="#FF616161" Text="{Binding FallbackValue=alexerax, Converter={StaticResource IValueActiveUserFromSnap}}" FontSize="18.667"></TextBlock>

                            <TextBlock Foreground="#FF616161" FontSize="18.667" Text="-" Margin="5,0,5,0" />

                            <TextBlock Foreground="#FF616161" FontSize="18.667" TextTrimming="WordEllipsis" Text="{Binding Path=Timestamp, FallbackValue=18/08/94 - 14:34, Converter={StaticResource IValueFriendlyTimeFromSnapChatTimestamp}}" />
                        </StackPanel>
                        <TextBlock FontSize="13.333" Text="{Binding FallbackValue=Pending..., Converter={StaticResource IValueFriendlySnapStatus}}">
                            <TextBlock.Foreground>
                                <SolidColorBrush Color="{StaticResource FapAccent}"/>
                            </TextBlock.Foreground>
                        </TextBlock>
                        <ProgressBar Width="150" Visibility="{Binding Converter={StaticResource IValueCheckIfSnapIsDownloading}}" HorizontalAlignment="Stretch" IsIndeterminate="True"></ProgressBar>
                    </StackPanel>

                    <ContentControl VerticalAlignment="Center" Grid.Column="2">
                        <TextBlock Text="10" >
                            <TextBlock.Foreground>
                                <SolidColorBrush Color="{StaticResource FapAccent}"/>
                            </TextBlock.Foreground>
                        </TextBlock>
                    </ContentControl>
                </Grid>
            </Button>
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>

【问题讨论】:

标签: xaml windows-phone-8


【解决方案1】:

你不能使用基于 %tage 的 grid.columns 来对齐它们吗?第 2 列中的 10 秒,Ypx 宽度较硬,在 1*px 的第 1 列中休息

EG:

 <Grid Height="50">

      <Grid.ColumnDefinitions>
           <ColumnDefinition Width="*"/> <!-- scale to fit rest -->
           <ColumnDefinition Width="50"/>
      </Grid.ColumnDefinitions>

      <StackPanel Orientation="Vertical" Grid.Column="1">
      <!-- main stuff-->
      </StackPanel>

      <StackPanel Orientation="Vertical" Grid.Column="2">
      <!-- right orientated text [10s] -->
      </StackPanel>

  </Grid>

【讨论】:

  • 问题出在按钮上,如果我删除它,项目会完美包装。 (但后来我失去了需要处理的 Button 事件)。
  • 所以是封闭的 没有缩放以填充整个宽度,而不是内容?可能是一个解决方案,只使用封闭的网格/堆栈面板(可以正确缩放)并处理 on_click/on_tap 吗?
  • 猜猜我必须这样做。该死的ItemsControl
【解决方案2】:

所以,问题在于我将HorizontalAlignment 设置为Left 的空按钮样式。 VS 的大小使那部分代码从屏幕上消失了,所以我看过去了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-02-23
    • 1970-01-01
    • 2016-06-28
    • 2012-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-25
    相关资源
    最近更新 更多