2017-04-12 97 views
0

內部的控件的位置我有一個具有多個ListBoxItem一個ListBox,我使用了一個StackPanelListBoxItem有一個Image &一個TextBlock控制內。我在編程上根據TextBlock的選擇設置了Image的可見性。 我正面臨一個問題,當圖像是Collapsed時,TextBlock正在向左移動,這不是預期的。有人可以幫我解決這個問題嗎?設置一個StackPanel

<ListBoxItem Tag="ATCListBox"> 

    <StackPanel x:Name="ATCPanel" Orientation="Horizontal"> 

     <Image 
      x:Name="atcTick" 
      Visibility="Collapsed" 
      Height="45" Width="45" 
      Source="ms-appx:///Assets/greentick.png" 
     /> 

     <TextBlock 
      Text="ATC" 
      Foreground="#0078D7" 
      Margin="45,0,0,0" 
      FontSize="32" 
      FontFamily="{ThemeResource Bold}" 
      FontWeight="Normal" 
      SelectionHighlightColor="Blue" 
     /> 

    </StackPanel> 
</ListBoxItem> 

回答

0

你用WPF標記了你的問題,但在評論 - 回覆中你說你使用的是UWP。

在UWP中,WPF Visibility="Hidden"選項被刪除,而代替Opacity="0"可用於隱藏元素,同時仍確保其空間被佔用。

在這裏看到:Workaround for Visibilty.Hidden state- Windows Phone 8.1 App Development

<Image 
    x:Name="atcTick" 
    Opacity="0" 
    Height="45" Width="45" 
    Source="ms-appx:///Assets/greentick.png" 
/> 
+0

爲我工作!不透明度 – Apoorv

0

Visiblity="Collapsed"意味着<Image />元素不會佔用任何空間 - 這是等同於CSS「display: none; - 如果你想的空間仍然佔據你應該使用Visibility="Hidden"這相當於CSS」 opacity: 0visiblity: hidden

+0

隱藏的是不存在的UWP XAML – Apoorv

+0

@Apoorv你標記爲WPF你的問題,不是UWP。 – Dai

0

這是預期的行爲。如果要預留空間,則應將Visibility設置爲隱藏。

可見:顯示該元素。
隱藏:不顯示元素,但爲佈局中元素保留空間。
摺疊:不要顯示元素,也不要在佈局中預留空間。