gpt4 book ai didi

c# - 数据绑定(bind)后如何添加项目?

转载 作者:可可西里 更新时间:2023-11-01 11:52:32 27 4
gpt4 key购买 nike

我试图将一些数据绑定(bind)到 gridview,然后在末尾有一个按钮(类似于 Windows 8 上的 MSN Finance 应用程序)。

我将如何实现这一点?

我当前的 xaml 代码:

            <DataTemplate>
<GridView
x:Name="StopGridViewItem"
ItemsSource="{Binding}"
Margin="0,0,20,20"
AutomationProperties.AutomationId="ItemGridView"
AutomationProperties.Name="Items In Group"
ItemTemplate="{StaticResource Standard310x260ItemTemplate}"
SelectionMode="None"
IsSwipeEnabled="false"
IsItemClickEnabled="True" ItemClick="StopGridViewItem_ItemClick">
</GridView>


</DataTemplate>

enter image description here

提前致谢!

最佳答案

有很多很多方法可以处理这种情况。

如果您正在处理一个简单的列表,而不是像我们在屏幕截图右侧看到的那样的动态马赛克,您可以简单地在您的列表后面放置一个按钮,使其看起来像你的 list 。当您处理一个不会自动滚动并且是最语义化的解决方案的列表时,这非常有效。

<DataTemplate>
<StackPanel>
<ItemsControl
x:Name="StopGridViewItem"
ItemsSource="{Binding}"
ItemTemplate="{StaticResource Standard310x260ItemTemplate}">
</ItemsControl>

<Button ... />
</StackPanel>
</DataTemplate>

如果您需要支持滚动,或者正在处理不能像马赛克一样简单地将按钮进一步向下推的控件,您需要在绑定(bind)到列表的集合中添加一个虚拟项。如果列表虚拟化不是问题,您可以简单地将其附加到转换器中集合的末尾。如果你需要支持虚拟化,那么这不是一个解决方案。您将需要一个自定义控件来处理这种情况。

最后,在列表中插入虚拟项目后,您可以在 View 中生成项目时使用 DataTemplateSelector 在普通模板和虚拟模板之间切换。

public static class EnumerableExtensions
{
public static IEnumerable Append(this IEnumerable source, object o)
{
foreach (var x in source)
{
yield return x;
}

yield return o;
}
}

public class DummyInserter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
var source = value as IEnumerable;
if (source == null) throw new UnsupportedException("DummyInserter converter requires an IEnumerable source");

return source.Append(new Dummy()).ToArray();
}
}

对于 XAML:

<Resources>
<DummyInserter x:key="AddButtonDummyInserter" />
<DummyTemplateSelector x:key="MySelector"
DefaultTemplate="{StaticResource Standard310x260ItemTemplate}"
DummyTemplate="{StaticResource 310x260AddButtonTemplate}" />
</Resources>

<DataTemplate>
<StackPanel>
<ItemsControl
x:Name="StopGridViewItem"
ItemsSource="{Binding, Converter={StaticResource AddButtonDummyInserter}}"
ItemTemplateSelector="{StaticResource MySelector}">
</ItemsControl>

<Button ... />
</StackPanel>
</DataTemplate>

关于c# - 数据绑定(bind)后如何添加项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26918302/

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