2009-07-28 5 views
1

イメージ・ストレッチプログラム的にXAMLを使用してWPFアプリケーションでWPF

に私は(1030幅)のStackPanelを作成し、私は2つのイメージを持っています。 1. imgClient width = 784 Height = 66 and 2. imgClientExtra width = 1 and Height = 66

imgClientExtraは右端になり、imgClientは左端で開始します。

したがって、アプリケーションが実行されていないときに画像は784 + 1に収まります。画像の幅は785(784 + 1)です。 しかし、アプリケーションが実行されています。 1030 ...とimgClientExtraは1030になり、imgClientは1029のみに伸びる必要があります。

私はストレッチを使用していましたが動作しませんでした。

現在、私はこの方法を使用しています。.. おかげ RAMM

を助けてください...これは修正する必要があります?

 <StackPanel Name="stkpnlHeader" Margin="0,0,0,0" Width="1254.662" Height="auto" HorizontalAlignment="Left" VerticalAlignment="Top"> 
       <StackPanel Name="imgStkPnl"Orientation="Vertical" Width="1253.511" HorizontalAlignment="Left"> 
        <Image Name="imgClientPhoto" HorizontalAlignment="Left" VerticalAlignment="Top" Width="784" Height="66" 
        Source="D:\ehtmp_top_left.gif" Stretch="Fill" StretchDirection="Both"> 

        </Image> 
        <Image Name="imgExtraImg" Width="1" Height="66" Margin="0,-66,0,0" HorizontalAlignment="Right" 
         Source="D:\ehtmp_top_right.gif" 
         ></Image> 
       </StackPanel> </StackPanel> 

おかげグリッドへのStackPanelから RAMM

答えて

1

変更を助けてください。 Grid.Column定義を設定します。 2つの列定義を作成 幅を使用して '比率'幅を設定できます。 たとえば、colA Width = "5 *"およびcolB Width = "3 *"は、colAがグリッドの5/8を取得し、colBがグリッドの3/8を取得することを意味します。 MinWidthとMaxWidthを設定してこのコンセプトを組み合わせれば、うまくいくはずです。

また、コードの幅を設定する場合、「幅」(時にはNaNを返す)ではなく 'ActualWidth'プロパティを使用して、既存のコントロールの幅をチェックする必要があります。

+0

H Darkwing ..私のクエリを編集し、ここにxamlコードを追加しました。これを動作させるには、stackpanel(imgStkPnl)をgridに置き換える必要がありますか? おかげ – Ramm

+0

こんにちは... だけ追加この部分..私は私が間違っまだ <グリッドたHorizo​​ntalAlignment = "左" 高さ= "66"> 実際の画像が ある| ____________ || _ | ap appが実行されていないとき。しかし、私がアプリケーションを実行すると、それは | ___________________________________________________________ || _ 助けてください ありがとう Ramm – Ramm

+0

別のスタックパネルの中にスタックパネルがあるようです。これは本当に無意味です。 2枚の画像を積み重ねるスタックパネルが1つだけ必要です。次に、イメージに実際の幅を設定しないでください。左のイメージでは、MinWidthを784に設定し、右のイメージではMinWidthを1に設定します。まだ動作していない場合は、更新された例を投稿し、例をクリーンアップしても、名前、余白、アライメントなどを削除して、可読性を妨げているので – DarkwingDuck

1

私はそれが自動的に最後の要素を伸ばすため、あなたのケースでDockPanelは(私はそれが動作しない場合は私に知らせて、このコードをビルドしようとしなかった)、働くだろうと思うだろう:

<DockPanel Height="66"> 
    <Image Name="imgExtraImg" Source="D:\ehtmp_top_right.gif" DockPanel.Dock="Right"/> 
    <Image Name="imgClientPhoto" Source="D:\ehtmp_top_left.gif"/> 
</DockPanel> 
+0

こんにちはマーク 助けてくれてありがとう。 私はGridを使って試しました。それはうまくいった。参照のために転記しています。 ありがとう ラム – Ramm

1
<Grid HorizontalAlignment="Left" Height="66" Name="imgGrid"> 
    <Grid.ColumnDefinitions> 
    <ColumnDefinition Width="*"></ColumnDefinition> 
    <ColumnDefinition Width="Auto"></ColumnDefinition> 

     </Grid.ColumnDefinitions> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="66"/> 
     </Grid.RowDefinitions> 

    <Image Name="imgClientPhoto" Grid.Column="0" Stretch="Fill"Source="D:\eHTMP\Exclusively_My_Work\UI_Application\Images\ehtmp_top_left.gif" ></Image> 
<Image Name="imgExtraImg" Grid.Column="1"Source="D:\eHTMP\Builds\output\WPF_Example\UI_eHTMP\UI_eHTMP\Icons\ehtmp_top_right.gif"></Image></Grid> 
関連する問題