2016-03-11 65 views
0

我有一個ListView需要一個按鈕放在列表中每個項目的右側。這意味着我需要一個按鈕被渲染外面的是一部分的東西,爲此,我知道的最好的方法是TranlateX:用TranslateX預防截止點

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

這是得到它的箱子外面我的按鈕來自,但它也切斷了我的右鍵的一半(好吧,右邊的80%,但你明白了)。我怎樣才能防止這個切斷?

我想避免更換ListView,如果可以的話,因爲它真的根深蒂固到這個應用程序,我不想做一個徹底的檢修,如果它可以避免。

PS:不,真的,它必須是以外的ListView的。 ListView有一個ItemContainerStyle,這個按鈕不能在裏面。我可以整天調整ListView的大小,但不會獲得外部的按鈕。

+0

你可以發佈xaml代碼嗎? –

回答

1

ListView內容託管在ScrollViewer內部,它將刪除任何不適合的內容。我看到了兩種選擇。

  1. 使ListView足夠寬的項目和按鈕。然後,也許你可以強制你的項目是特定的寬度(使用ItemContainerStyle/Style/Setter/Property/Width),並使用你的變換推出它。儘管如此,它仍然可以剪輯已翻譯的項目。然後,您必須根據ListViewItem styles and templates重新模板每個項目,以使項目鑲邊和容器的使用量小於整個項目的整個空間並將按鈕放在那裏。
  2. 你可以把你的按鈕放在PopupFlyout。我認爲,雖然現實 - 你的按鈕只有當你懸停一個項目時纔會出現,因爲當你滾動ListView時,每個項目的Popup可能不會滾動。這當然會對非鼠標使用造成一些問題。
0

因此,我在問了幾天後才真正解決了這個問題,但我不認爲該解決方案對共享尤其有幫助。基本上我進入了控制ListView邊界的(大規模)代碼,並將其更改爲有很大的餘量,並將其推回到ListView中。 TranslateX甚至不再需要,因爲ListView已經超出了邊界。

所以這個問題不是一個可以'固定'本身,只是以某種方式工作。