类别:.Net相关知识 / 日期:2014-01-04 / 浏览:1570 / 评论:0

1.  提出问题: 在进行Windows Store App开发的时候,有的时候会遇到再GridView中绑定显示一个List对象的所有内容,通常有一些字段在绑定的时候并不能确定长度,所以无法为一些控件指定显示的长度,这样就会出现在显示的时候显示不完整的情况。 举个例子,我现在要在一个Gridview中绑定一个List类型的对象,并且在数据模版中设置一个Button,绑定Button的Content属性到List对象中的一个字段,初始化这个List的时候将该字段的赋值的长度各不相同,如果直接绑定就会出现第一个按钮显示完全,其他的按钮长度都很第一个相同,这样上面的内容就显示不完全了,如下图。

我们现在需要让GridView中每一个Button都能根据绑定的内容自适应宽度。

2.  前提知识 为解决这个问题首先我们需要了解GridView的ItemsPanel属性,该属性主要是用来控制每一项的布局的模板的。其中可以指定ItemsPanelTemplate来设置每一项的布局的模版。 在ItemsPanelTemplate对象元素中只能包含一个用于布局的元素,不能设置多个,该布局的元素必须派生自Panel类。 

3.    解决方法 解决的办法很简单,只需要设置GridView的ItemsPanel属性下的ItemsPanelTemplate模版为StackPanel,这样就可以自适应显示Button中的文本了。 前台XMAL界面:

<GridView x:Name="gvData" Margin="200" Height="80">
  <GridView.ItemsPanel>
    <ItemsPanelTemplate>
      <StackPanel Orientation="Horizontal" />
    </ItemsPanelTemplate>
  </GridView.ItemsPanel>
  <GridView.ItemTemplate>
    <DataTemplate>
      <StackPanel Orientation="Vertical">
        <Button Content="{Binding Name}" Name="btnTest" Width="Auto" />
      </StackPanel>
    </DataTemplate>
  </GridView.ItemTemplate>
</GridView>

后台页面的代码: 

public sealed partial class MainPage : Page
{
    public MainPage()
    {
        this.InitializeComponent();
        List<ItemBasic> data = new List<ItemBasic>() { new ItemBasic() { Name = "第1个按钮" }, new ItemBasic() { Name = "第222222个按钮" },
                                    new ItemBasic() { Name = "第333333333个按钮", }, new ItemBasic() { Name = "第444444444444444个按钮" } };
        this.gvData.ItemsSource = data;
    }
}
public class ItemBasic
{
    public string Name { get; set; }
}

最后显示的效果如下图:

源码下载:百度网盘

可能感兴趣的文章

评论区

发表评论 /

必填

选填

选填

◎欢迎讨论,请在这里发表您的看法及观点。