使用TranslateX防止截止

时间:2016-03-11 18:26:50

标签: winrt-xaml

我有一个ListView,需要在列表中的每个项目的右侧放置一个按钮。这意味着我需要一个按钮来呈现它所属的东西 ,而我所知道的最好的方法是TranlateX:

<Button>
    <Button.RenderTransform>
        <CompositeTransform TranslateX="50"/>
    <Button.RenderTransform>
    <!-- ...other button stuff... -->
<Button>

这是将我的按钮从它的盒子外面取出,但它也切断了我的按钮的右半部分(好吧,右边的80%,但你得到了理念)。我怎样才能防止这种截止?

如果可以的话,我想避免更换ListView,因为它真的根深蒂固在这个应用程序中,如果可以避免,我不想进行彻底检修。

PS:不,真的,它必须是ListView的外部。 ListView有一个ItemContainerStyle,这个按钮不能在里面。我可以整天调整ListView的大小,但是不会在外面获得按钮。

2 个答案:

答案 0 :(得分:1)

ListView内容托管在ScrollViewer内,可以剪掉任何不适合的内容。我看到了两个选项。

  1. 使ListView足够宽,以便同时显示项目和按钮。然后,也许你可以强制你的项目具有特定的宽度(使用ItemContainerStyle/Style/Setter/Property/Width)并使用你的变换推出它。虽然它仍然可以剪辑您翻译的项目,但这是可能的。然后,您必须根据ListViewItem styles and templates重新计算每个项目,以使项目镀铬和容器使用少于整个项目的整个空间,并将按钮放在那里。
  2. 您可以将按钮放在PopupFlyout中。实际上我认为 - 你的按钮只需要在你悬停一个项目时显示,因为当你滚动Popup时,每个项目的ListView可能不会滚动。这当然会给非鼠标使用带来一些问题。

答案 1 :(得分:0)

所以我在询问后几天实际上解决了这个问题,但我不认为解决方案特别有助于分享。基本上我进入了(大规模)代码,它控制了ListView上的边框并将其更改为有一个很大的余量,将其推回到ListView内部。由于ListView超出边界,因此甚至不再需要TranslateX。

所以这个问题不是一个可以“固定”的问题,只能以某种方式解决。