我有一个ListView,需要在列表中的每个项目的右侧放置一个按钮。这意味着我需要一个按钮来呈现它所属的东西 ,而我所知道的最好的方法是TranlateX:
<Button>
<Button.RenderTransform>
<CompositeTransform TranslateX="50"/>
<Button.RenderTransform>
<!-- ...other button stuff... -->
<Button>
这是将我的按钮从它的盒子外面取出,但它也切断了我的按钮的右半部分(好吧,右边的80%,但你得到了理念)。我怎样才能防止这种截止?
如果可以的话,我想避免更换ListView,因为它真的根深蒂固在这个应用程序中,如果可以避免,我不想进行彻底检修。
PS:不,真的,它必须是ListView的外部。 ListView有一个ItemContainerStyle,这个按钮不能在里面。我可以整天调整ListView的大小,但是不会在外面获得按钮。
答案 0 :(得分:1)
ListView
内容托管在ScrollViewer
内,可以剪掉任何不适合的内容。我看到了两个选项。
ListView
足够宽,以便同时显示项目和按钮。然后,也许你可以强制你的项目具有特定的宽度(使用ItemContainerStyle/Style/Setter/Property/Width
)并使用你的变换推出它。虽然它仍然可以剪辑您翻译的项目,但这是可能的。然后,您必须根据ListViewItem styles and templates重新计算每个项目,以使项目镀铬和容器使用少于整个项目的整个空间,并将按钮放在那里。Popup
或Flyout
中。实际上我认为 - 你的按钮只需要在你悬停一个项目时显示,因为当你滚动Popup
时,每个项目的ListView
可能不会滚动。这当然会给非鼠标使用带来一些问题。答案 1 :(得分:0)
所以我在询问后几天实际上解决了这个问题,但我不认为解决方案特别有助于分享。基本上我进入了(大规模)代码,它控制了ListView上的边框并将其更改为有一个很大的余量,将其推回到ListView内部。由于ListView超出边界,因此甚至不再需要TranslateX。
所以这个问题不是一个可以“固定”的问题,只能以某种方式解决。