wpf数据绑定,绑定内部控件宽度为外部1/2

渃水 2016-04-16 09:57:40

比如说这种,是可以的么?
内部图片宽度始终为gridview的一半(或者其他某个经过计算的数值)。

这么写是实现不了的,难道非要后台处理sizechanged事件么?有没有人知道该怎么解决?

还有一个问题,就是用数据模版绑定后,后台获取item的时候,获取到的就不是gridviewitem控件,而是我绑定的list<>对象了,那么又该怎么获取到控件改变大小呢!

我之前是用类似winform的方法,后天add控件item的,总觉得这么写很丑陋。有没有人可以指点下。
...全文
1628 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
宇峰科技 2016-04-24
  • 打赏
  • 举报
回复
楼上是对的,你的布局设计就有问题,这样的设计最好用模板
西村秀木 2016-04-22
  • 打赏
  • 举报
回复
把 stackPanel 换成grid 然后用6楼提供的方式比较好。感觉这么写 你试试
            <DataTemplate>
                                    <Grid>
                                        <Grid.ColumnDefinitions>
                                            <ColumnDefinition  />
                                            <ColumnDefinition />
                                        </Grid.ColumnDefinitions>
                                        <Grid.RowDefinitions>
                                            <RowDefinition/>
                                            <RowDefinition/>
                                        </Grid.RowDefinitions>
                                        <Image></Image>
                                        <TextBlock Grid.Row="1" Grid.ColumnSpan="2"/>
                                    </Grid>
                                </DataTemplate>
JoneG 2016-04-21
  • 打赏
  • 举报
回复
是的。 为什么不考虑用 Width = "*", Width = "2*" 之类的做法?页面尺寸变更时,width 会自动变化的
好几只小萝莉 2016-04-18
  • 打赏
  • 举报
回复
使用Converter计算,OneWay绑定ActualWidth,可以满足你的需求。 然而,你为什么用: <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="*" /> <ColumnDefinition Width="*" /> </Grid.ColumnDefinitions> </Grid>
muzizongheng 2016-04-17
  • 打赏
  • 举报
回复
1.Image的Width是依赖属性,支持动态变化,理论上你的你绑带了page的Width,它肯定会变, 你进converter看下是不是只有第一次进入,按道理不会出现这个情况, 要不你换个ActualWidth试试,绑定Page的这个属性。 2.你要用ItemContainerGenerator 中的ItermFromObject类似的方法, 把object对象转为它界面上生成的对象。
渃水 2016-04-16
  • 打赏
  • 举报
回复
引用 1 楼 duanzi_peng 的回复:
写个 Converter 转换类,在类中计算宽度并返回; 后台获取的 就是 List 中的对象,没有gridviewitem 这个说法
以前一直写winform,有点不习惯,我看看去
  • 打赏
  • 举报
回复
写个 Converter 转换类,在类中计算宽度并返回; 后台获取的 就是 List 中的对象,没有gridviewitem 这个说法
渃水 2016-04-16
  • 打赏
  • 举报
回复
引用 1 楼 duanzi_peng 的回复:
写个 Converter 转换类,在类中计算宽度并返回; 后台获取的 就是 List 中的对象,没有gridviewitem 这个说法
写了Converter 是可以了,但只有第一次加载时触发,怎么能做到,当page大小改变时,内部跟着一起改变呢?

8,757

社区成员

发帖
与我相关
我的任务
社区描述
WPF/Silverlight相关讨论
社区管理员
  • WPF/Silverlight社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧