2014-02-12 72 views
0

我想在圖像和視圖框之間的窗體頂部添加一行水平按鈕,但是當我添加按鈕時它將填充圖像。我嘗試添加一個網格來包含按鈕,但是填充了圖像元素。有誰知道我會如何實現這一目標?如何在ViewBox和WPF中的圖像之間添加水平按鈕行?

我敢肯定,必須有一個快速解決這個問題,有人可以解釋爲什麼會發生這種情況?我通常使用設計器,但我認爲在這種情況下,我應該更好地理解xaml元素和屬性。

我這是怎麼定義的窗口布局:

<Window x:Class="KinectKickboxingBVversion1.ConditioningFrm" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="ConditioningFrm" Height="377.612" Width="637.313"> 
    <Grid> 

     <Viewbox Grid.Row="1" Stretch="Uniform" HorizontalAlignment="Center"> 

      <Image Name="Image" Width="640" Height="250"/> 

      </Viewbox> 

    </Grid> 
</Window> 

Trying to add a row of buttons in the space between the image and the top of the window

設置圖像源位圖:

KinectVideo.Source = BitmapSource.Create(colorFrame.Width, colorFrame.Height, 96, 96, 
        PixelFormats.Bgr32, null, colorData, colorFrame.Width * colorFrame.BytesPerPixel) 
+0

添加一個StackPanel,設置方向與水平。 – Jesse

+0

圖像和視圖之間? –

+0

在寫它之前,你需要了解XAML。你不能把它放在ViewBox和Image之間。 – Kcvin

回答

2

如果你想要把它放在頂部沒有縮放的形式,請執行以下操作:

<Window x:Class="KinectKickboxingBVversion1.ConditioningFrm" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="ConditioningFrm" Height="377.612" Width="637.313"> 
    <Grid> 
     <Grid.RowDefinitions> 
      <RowDefintion Height="Auto" /> 
      <RowDefintion Height="*" /> 
     </Grid.RowDefinitions> 

     <StackPanel Orientation="Horizontal" Grid.Row="0"> 
      <Button Content="1"/> 
      <Button Content="2"/> 
      <Button Content="2"/> 
     </StackPanel> 
     <Viewbox Grid.Row="1" Stretch="Uniform" HorizontalAlignment="Center"> 
      <Image Name="Image" Width="640" Height="250"/> 
     </Viewbox> 
    </Grid> 
</Window> 

如果你真的想加入視框按鈕的StackPanel中,做到這一點:

<Window x:Class="KinectKickboxingBVversion1.ConditioningFrm" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="ConditioningFrm" Height="377.612" Width="637.313"> 

    <Viewbox Stretch="Uniform" HorizontalAlignment="Center"> 
     <StackPanel Orientation="Vertical"> 
      <StackPanel Orientation="Horizontal"> 
       <Button Content="1"/> 
       <Button Content="2"/> 
       <Button Content="2"/> 
      </StackPanel> 
      <Image Name="Image" Width="640" Height="250"/> 
     </StackPanel> 
    </Viewbox> 
</Window> 

圖像源設置爲位圖:

KinectVideo.Source = BitmapSource.Create(colorFrame.Width, colorFrame.Height, 96, 96, 
        PixelFormats.Bgr32, null, colorData, colorFrame.Width * colorFrame.BytesPerPixel) 
+0

好,所以堆疊面板必須在視框外,你能解釋爲什麼這是? –

+0

'ViewBox'只能存儲一個孩子。我將編輯以向您展示如何將其添加到Viewbox中,一秒 – Kcvin

+0

好吧有趣,我還在最後一個例子中指出RowDefinition在WPF中不受支持,是否有替代方案? –

相關問題