求助 GridView的ItemTemplate 如何自适应Page的宽度

Leeway213 UID.76829
2016-01-10 发表

如题。。。
我试图绑定page的ActualWidth,但只有页面初始化的时候会计算width的值,不会随窗口大小改变而改变,代码如下:
<GridView x:Name="articleList" ItemsSource="{Binding ArticleList, Mode=OneWay}">
<GridView.ItemTemplate>
<DataTemplate>
<Grid Width="{Binding ActualWidth, ElementName=page, Mode=OneWay, Converter={StaticResource DoubleOneThirdConvert}}">
</Grid>
</DataTemplate>
</GridView.ItemTemplate>
</GridView>


不知道大家有没有什么好的实现方法。。{:6_243:} {:6_243:} {:6_243:}

标签: 如何

敬告:
为防止不可控的内容风险,本站已关闭新用户注册,新贴的发表及评论;
你现在看到的内容只是互联网用户曾经发表的言论快照,仅用于老用户留存纪念,且仅与科技行业相关,全部内容不代表本站观点及立场;
本站重新开放前已针对包括用户隐私、版权保护、信息安全、国家政策在内的各种互联网法律法规要求,执行了隐患内容的自查、屏蔽和删除;
本站目前所属个人主体,未有任何盈利安排与计划,且与原WFUN.COM所属公司不存在任何关联关系;
如果本帖内容或者相关资源侵犯到您的合法权益,或者您认为存在问题,那么请您务必点此举报或投诉!
全部回复:
wifi王道 UID.553
2016-01-10 回复

本帖最后由 wifi王道 于 2016-1-10 17:54 编辑

<GridView.ItemTemplate>
<DataTemplate>
<StackPanel MaxWidth="400">
<Grid>

</Grid>
</StackPanel>
</DataTemplate>
</GridView.ItemTemplate>

我里面有Image可以撑开stackpanel,你可以试试

fly****jia UID.967081
2016-01-10 使用 Lumia 920 回复

凑凑热闹,没看懂。刚记住
Console. WriteLine("Hello world!");

暗****手 UID.379158
2016-01-12 回复

注册Page.SizeChanged事件,在里面获得e.NewSize.Width,然后可以用各种方法改了

wcavell UID.34926
2016-01-12 回复

{:6_220:} 你都想撑开了为啥不要ListView
即使你用GridView 也可以修改Style
[mw_shl_code=csharp,false] <GridView.ItemContainerStyle>
<Style TargetType="GridViewItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
</Style>
</GridView.ItemContainerStyle>[/mw_shl_code]

Leeway213 UID.76829
2016-01-12 回复

Quote***链接停止解析***
注册Page.SizeChanged事件,在里面获得e.NewSize.Width,然后可以用各种方法改了


我试过这种方法,通过GridView的SizeChanged事件,遍历到GridViewItem控件,然后修改width的值。。。。 然后没有效果,是希望修改每个GridViewItem的width,是不是不能这么直接修改,要重新生成一个DataTemplate?

h82****652 UID.880817
2016-01-12 回复

Quote***链接停止解析***
你都想撑开了为啥不要ListView
即使你用GridView 也可以修改Style
[mw_shl_code=csharp,false] ...


正解无误{:3_96:}

wcavell UID.34926
2016-01-13 回复

Quote***链接停止解析***
我试过这种方法,通过GridView的SizeChanged事件,遍历到GridViewItem控件,然后修改width的值。。。。 ...


你要修改的不应该是GridViewItem
而是GridView.RootPanel
我记得那个GridView的RootPanel默认是ItemsWrapGrid,也就是xaml里的
[mw_shl_code=csharp,true]<GridView.ItemsPanel>
<ItemsPanelTemplate>
<ItemsWrapGrid/>
</ItemsPanelTemplate>
</GridView.ItemsPanel>[/mw_shl_code]
你可以设置WarpGridItem.ItemWidth;

Leeway213 UID.76829
2016-01-13 使用 Lumia 830 回复

Quotewcavell 发表于 2016-1-13 19:36
你要修改的不应该是GridViewItem
而是GridView.RootPanel
我记得那个GridView的RootPanel默认是ItemsWrap ...


啊!对 要设置容器的!
谢谢大锅

暗****手 UID.379158
2016-01-14 回复

本帖最后由 暗影吉他手 于 2016-1-14 02:52 编辑

Quote***链接停止解析***
我试过这种方法,通过GridView的SizeChanged事件,遍历到GridViewItem控件,然后修改width的值。。。。 ...


不需要遍历啊,你把ItemsPanel里面ItemsWrapGrid的ItemWidth绑定到一个全局对象的xx属性上,然后直接修改这个全局对象的属性就行了。

<ItemsWrapGrid ItemWidth="{Binding Path=Width, Mode=OneWay, Source={StaticSource XXX}"/>类似这样

Leeway213 UID.76829
2016-01-16 使用 Lumia 830 回复

Quote暗影吉他手 发表于 2016-1-14 02:49
不需要遍历啊,你把ItemsPanel里面ItemsWrapGrid的ItemWidth绑定到一个全局对象的xx属性上,然后直接修改 ...


帅! 机智的少年

tmp00000 UID.995403
2016-01-28 使用 Lumia 1520 回复

ItemsPanel正解

pop****man UID.1347475
2016-02-07 回复

百度下visualstatemanager

Leeway213 UID.76829
2016-02-08 回复

Quote***链接停止解析***
百度下visualstatemanager


visualstatemanager只是到某个状态变一次 不能实时跟着窗口大小变化

海底之心 UID.852922
2016-02-08 使用 Lumia 930 回复

人人有份

zhangyiyu UID.1114821
2016-02-08 使用 Lumia 640 回复

我怎么感觉是visualststegroups的问题

xx****st UID.1130055
2016-02-13 使用 Lumia 830 回复

在pageresouse里定义item的横向对齐为填充

本站使用Golang构建,点击此处申请开源鄂ICP备18029942号-4联系站长投诉/举报