2012-05-23 16 views
6

XAMLでImageBrushを使用して、Gridに背景を適用したいとします。ImageBrushを使用したグリッド背景画像

私はブラシにx:Keyを与え、私のグリッドでそれを参照したいと思います。

悲しいことに、悲しいことに、画像としては全くバックグラウンドとして登場しません。

<Window.Resources> 
    <ImageBrush ImageSource="/MAQButtonTest;component/images/bird_text_bg.jpg" x:Key="BackgroundSponge" /> 
    <Style TargetType="TextBlock"> 
     <Setter Property="OverridesDefaultStyle" Value="True"/> 
    </Style> 
    <ControlTemplate TargetType="Button" x:Key="ButtonTemplate"> 
     <Grid Width="444" ShowGridLines="False" SnapsToDevicePixels="True" Background="{DynamicResource BackgroundSponge}"> 
      <Grid.RowDefinitions> 
       <RowDefinition Height="51" /> 
       <RowDefinition Height="36" /> 
      </Grid.RowDefinitions> 
      <Grid Grid.Row="0" Background="#286c97"> 

      </Grid> 
      <Grid Grid.Row="1" Background="#5898c0"> 
       <ContentPresenter Grid.Row="0" /> 
      </Grid> 
     </Grid> 
    </ControlTemplate> 
</Window.Resources> 

私はおそらく私がDynamicResourceStaticResourceを試してみた、間違った方法でそれを参照すると思います。

+0

どのようにプロジェクトにあなたの背景画像を含むされていますか? 'ImageSource =" pack:// application:,,,/component/images/bird_text_bg.jpg "' – paul

+1

あなたが直接指定した場合、ImageSourceは次のようになります。 (リソースを使用するのではなく)表示されますか? – Tim

+0

それは奇妙なことです。私はそれをコンテンツに設定し、Visual Studioで画像を持っています。私は単にプロパティペインの "ImageSource"のためにビジュアルスタジオ内の楕円形のボタンを使用して、自動的にそのパスを生成しました。 – Luke

答えて

2

<ImageBrush x:Key="play" ImageSource="../Images/Buttons/Play.png" /> 

そして、イメージブラシを参照します。

<Grid Width="444" 
      Height="500" 
      Background="{DynamicResource BackgroundSponge}" 
      ShowGridLines="False" 
      SnapsToDevicePixels="True"> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="51" /> 
      <RowDefinition Height="36" /> 
     </Grid.RowDefinitions> 
     <Grid Grid.Row="0" Background="#286c97" Opacity="0.2" Margin="5"/> 
     <Grid Grid.Row="1" Background="#5898c0" Opacity="0.2" Margin="5"> 
      <ContentPresenter Grid.Row="0" /> 
     </Grid> 
    </Grid> 

は、幅がOKですが高さはどれくらいですか?あなたの子供のアイテムの高さを大きくすれば、それが表示されます。

以上の場合、内部の子に余裕があること。

よう

証拠金= "5"

やインナーチャイルドを透明に不透明度= "0.2"

+0

ありがとう!私は怒っていた:) – Luke

+0

私は絶対パスを使用して私のハードドライブ上にあるイメージを自動的にエクスポートされますか? – BlueWizard

+0

外部リソースは、内部オブジェクトツリーに存在しないため、エクスポートされません。 – JSJ

3

私はいつもこのようにしました。

<Grid> 
    <Grid.Background> 
     <ImageBrush ImageSource="/Resources/Images/BG_BlankOptimized.png"/> 
    </Grid.Background> 
</Grid> 

以上パウロはそのスタイルを呼び出すためにStaticResourceを使うことを提案するもののようなイメージのパスを使用してimagebrushリソースでそれを呼び出す場合。

9

私はこれを一般的に使用します。イメージがリソースとしてプロジェクトに追加された場合は、これを比較的参考にしてください。あなたは文句を言わない背景を見ることができるように、なぜ、外側グリッドのすべての利用可能なスペースがthatsのカバー内側のチャイルズを持っているあなたのメイングリッドで

<Border Background="{StaticResource play}"/> 
+0

私にとって最も重要な部分は、私の場合はコンテンツであったため、「画像がリソースとしてプロジェクトに追加された場合」という部分だったと付け加えました。ありがとう! – Nikola