gpt4 book ai didi

单击时 C# XAML 列表框折叠

转载 作者:太空宇宙 更新时间:2023-11-03 20:03:01 25 4
gpt4 key购买 nike

我是 Windows Phone 8.1 XAML 的新手,在使用

时遇到了一些问题
  1. 使 Stackpanel 可点击
  2. 单击时折叠项目

到目前为止,我的工作看起来是这样的: enter image description here

以及代码(如果有重大缺陷,请纠正我):

<Border CornerRadius="15" Background="#FF595656" Margin="0" Grid.ColumnSpan="2" Height="80">
<StackPanel Orientation="Horizontal">
<StackPanel Width="20" HorizontalAlignment="Left" VerticalAlignment="Top" />
<StackPanel HorizontalAlignment="Left" Height="80" Margin="0,0,0,0" VerticalAlignment="Center" Width="51">
<Image HorizontalAlignment="Left" Height="51" Margin="0,15,0,0" Width="51" Source="Assets/fish.png" Stretch="Fill" RenderTransformOrigin="2.307,0.881" VerticalAlignment="Center"/>
</StackPanel>
<StackPanel Width="10" HorizontalAlignment="Left" VerticalAlignment="Top" />
<StackPanel HorizontalAlignment="Left" Height="80" Margin="0" VerticalAlignment="Top" Width="310">
<TextBlock HorizontalAlignment="Left" Height="25" Margin="0,20,0,0" TextWrapping="Wrap" Text="Entry 1" Width="310" VerticalAlignment="Top" FontSize="18" Foreground="Black" FontWeight="Bold"/>
<TextBlock HorizontalAlignment="Left" Height="17" Margin="0" TextWrapping="Wrap" Text="Short description Entry 1" Width="310" VerticalAlignment="Top" Foreground="#FF0097FF"/>
</StackPanel>
</StackPanel>
</Border>

此代码稍后将被包装在带有图像、条目 1 和绑定(bind)的简短描述的 ListBox 中:

<ListBox x:Name="ListBox1" Margin="0"
Width="400" Height="200" HorizontalAlignment="Left"
ItemsSource="{Binding}" Grid.Row="1" VerticalAlignment="Top" Grid.ColumnSpan="2" >
<ListBox.ItemTemplate>
<DataTemplate>

// the code above

</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>

所以我的问题是:每当我点击 ListBox 中的每个 Item 时,我怎样才能使它看起来漂亮展开/折叠?

非常感谢您。

最佳答案

真正的问题是你想让它折叠成什么?折叠某些可视数据项的可能方法太多了。您只是想更改项目的高度,还是想要一些折叠某些属性的奇特动画?

如果您要查找的是高度,那很容易。只需附上 Tap Event在你的边界上。在旁注中,您可能想要编辑 ItemContainerStyle<Setter Property="HorizontalContentAlignment" Value="Stretch"/>所以列表框会横跨屏幕,否则恕我直言,它无法使用。


<ListBox.ItemTemplate>
<DataTemplate>
<Border BorderBrush="Red" BorderThickness="0,1" Tap="Border_Tap">
<StackPanel>
<!--- rest of template --->
</StackPanel>
</Border>
</DataTemplate>
</ListBox.ItemTemplate>

然后计算您想要显示的最小高度(确保它实际可用,这意味着......我可以再次点击它以显示整个内容而无需使用 Mag Glass)。

private void Border_Tap(object sender, System.Windows.Input.GestureEventArgs e)
{
int minHeight = 40; // change to whatever you want
Border b = sender as Border;
if (b.ActualHeight > minHeight)
{
b.Height = minHeight;
}
else
{
b.Height = double.NaN; // this will change the height back to Auto, showing everything
}
}

代码实战

enter image description here
enter image description here


这只是您问题的快速解决方案。这里的一些人宁愿让你创建一个 StoryBoard Selected 的高度属性动画VisualStateManager 中的状态.如果您改写或创建一个新问题,明确说明您想要 VisualStateManager解决方案,我也会给你一个。祝你好运。

关于单击时 C# XAML 列表框折叠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26064920/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com