2015-06-21 31 views
1

我想製作ToggleButtons的列表。他們每個人都被綁定到一個彈出窗口。 我有一個問題,所以我試圖把所有內容StackPanel。 但是,現在,當應用程序正在運行時,它將在ToggleButton之後顯示一個空白空間(用於Popup)。我能做些什麼來解決這個問題?如何使用綁定到xaml wpf中的ListView中的ToggleButton的Popup?

我剛剛添加了兩張圖片: 第一個是上傳頁面的時候。 第二個是當我向下滾動頁面。

enter image description here enter image description here

<ListView x:Name="ListOfRecipes" HorizontalAlignment="Center" VerticalAlignment="Top" ItemsSource="{Binding}" Grid.Row="1" Margin="25,0.333,25,35" ScrollViewer.VerticalScrollMode="Enabled" Grid.RowSpan="5" > 
     <ListView.ItemTemplate> 
      <DataTemplate> 
       <Grid> 
        <ToggleButton x:Name="RecipeButton" Grid.Row="1" BorderBrush="#FF65C365" VerticalAlignment="Center" HorizontalAlignment="Center" Click="Button_Click" Height="150" Width="328" > 
         <StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center" Height="128" Width="328"> 
          <Image Source="{Binding Path=ImageUri}" Height="128" Width="128" Margin="0,6,0,-5.667" /> 
          <StackPanel Orientation="Vertical" HorizontalAlignment="Left" VerticalAlignment="Top" Height="128" Width="192"> 
           <TextBlock Height="25" Width="190" Foreground="#FF6FDC13" Text="{Binding Name}" VerticalAlignment="Top" /> 
           <Image Name="YesOrNoImage" Source="{Binding Path=YesOrNoImage}" Width="102" Height="102" HorizontalAlignment="Center" VerticalAlignment="Bottom"/> 
          </StackPanel> 
         </StackPanel> 
        </ToggleButton> 
        <Popup IsOpen="{Binding IsChecked, ElementName=RecipeButton, Mode=TwoWay}" Height="514" Width="328" VerticalAlignment="Center" Name="PopupOne" Grid.Row="1" Grid.RowSpan="4" IsLightDismissEnabled="True" IsHoldingEnabled="False" ScrollViewer.VerticalScrollMode="Enabled" > 
         <Border BorderBrush="#FF65C365" BorderThickness="1" Background="White" Height="514" Width="328"> 
         <StackPanel Orientation="Vertical" ScrollViewer.VerticalScrollMode="Enabled"> 
          <Image Source="{Binding Path=ImageUri}" Height="328" Width="328" /> 
          <TextBlock Foreground="#FF6FDC13" Text="{Binding Name}" HorizontalAlignment="Left" FontSize="28" /> 
           <ScrollViewer VerticalScrollMode="Enabled" > 
            <TextBlock Foreground="Black" Text="{Binding RecipeText}" HorizontalAlignment="Left" FontSize="18" /> 
           </ScrollViewer> 
         </StackPanel> 
        </Border> 
       </Popup> 
       </Grid> 
      </DataTemplate> 

     </ListView.ItemTemplate> 

    </ListView> 
+0

用'Grid'替換'StackPanel' – dkozl

+1

我也試過了。同樣的問題。 – Nnp

+0

你能提供一張「空白空間」的照片嗎? –

回答

3

看來這個問題是由<PopUp Height=514/> 造成測試,將高度設置爲0,看它是否解決了國內空白。如果是這樣,您可以使用可見性轉換器將可見性綁定到PopUp.IsOpen(我認爲藍色MVVM有一個)。由於我目前對轉換器的教育不是很好,所以我想出了一個解決方法。

public RecipeButton : INotifyPropertyChanged { 
    // Need to implement INotifyPropertyChanged logic on IsCheckedVisiblity for UI to be notified of visibility changes 
    public Visibility IsCheckedVisibility { get; set; } 
    private bool _IsChecked; 
    public bool IsChecked { 
     get { return _IsChecked }; 
     set { _IsChecked = value; 
      this.IsCheckedVisibility = value == true ? Visiblity.Collapsed : Visiblity.Visible; 
     } 

} 

<PopUp Visibility = "{Binding IsCheckedVisibility}"/>

讓我知道,如果不工作,我會嘗試別的東西。

+1

OMG!完善!非常感謝!!!!!我剛剛將高度更改爲0,它可以工作!!!!!!!!!!!!!!!!非常感謝!!!! – Nnp

+1

我想投票你的答案,但我沒有足夠的聲譽呢=]謝謝,謝謝,謝謝! =] – Nnp

+0

沒問題,交配。祝你的應用程序好運! –

相關問題