2011-01-12 17 views
4

私はXAML形式のベクトルグラフィックファイルをいくつか持っており、Silverlightアプリケーションのアイコン/ボタンとして使用したいと考えています。 私が好むアプローチは、Imageコントロールを使用し、そのソースプロパティを.xamlファイルに設定することです。通常のビットマップイメージと同じように使用します。XAMLアイコン - 使用方法は?

しかし、それは簡単ではなく、私はリソース辞書のControlTemplatesとしてそれらを含めることを試みました。さらに、Xamlを動的に読み込むカスタムコントロールを作成しようとしましたが、 ViewBoxコントロールでラップして動的なサイズなどを可能にする

私のxamlアイコンの使い方を教えてください。 私は必要に応じてxamlをコピーして貼り付けることができましたが、私は実際にそのようなアプローチをしていません。

ありがとうございます。

答えて

4

JWendel、

あなたは明確にするために、あなたのXAMLのアイコンのいくつかの例を掲載しますが、コンテンツ管理、ボタン年代とContentControlに年代のように、コンテンツ、およびContentTemplateの両方を持っている必要がありますプロパティ。共有ContentTemplate例を以下に示します。

<UserControl 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:sdk="http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk" 
    xmlns:toolkit="http://schemas.microsoft.com/winfx/2006/xaml/presentation/toolkit" 
> 
    <UserControl.Resources> 
     <Style x:Key="MyTriangleIcon" TargetType="ContentControl"> 
      <Setter Property="ContentTemplate"> 
       <Setter.Value> 
        <DataTemplate> 
         <Grid> 
          <Polygon Fill="Black" Stroke="Black"> 
           <Polygon.Points> 
            <Point X="0" Y="100"/> 
            <Point X="100" Y="0"/> 
            <Point X="100" Y="100"/> 
           </Polygon.Points> 
          </Polygon> 
          <Polygon Fill="Red" Stroke="Red"> 
           <Polygon.Points> 
            <Point X="100" Y="0"/> 
            <Point X="0" Y="100"/> 
            <Point X="0" Y="0"/> 
           </Polygon.Points> 
          </Polygon> 
         </Grid> 
        </DataTemplate> 
       </Setter.Value> 
      </Setter> 
     </Style> 
    </UserControl.Resources> 

    <StackPanel Background="White"> 
     <Button Width="120" Height="120" Style="{StaticResource MyTriangleIcon}" /> 
     <Button Width="120" Height="120" Style="{StaticResource MyTriangleIcon}" /> 
    </StackPanel> 

</UserControl> 

あなたはすぐに結果を確認するために私のXamlViewerに上記の内容を貼り付けることができます。

幸運、
ジム・マッカーディごrelpyジム用

+0

感謝。 しかし、thatsは、画像を使用するすべてのコントロールに対して、または各コントロールタイプに対して少なくとも1つのスタイル/テンプレートを作成するために、自分のXAMLを複製するという「問題」を解決しません。 .pamファイルや.jpegファイルと同じように.xamlファイルで作業させる方法を見つけたいと思います。 それは大したことではありませんが、それらを使用するコピー貼り付けの方法が十分満足できるものではなく、Contentプロパティで使用できるという点で正しいと感じました。 – jmw

+0

重複を避けるため、アプリケーションレベル(Application.Resources)またはUserControlsレベル(UserControl.Resources)のいずれかでContentControlリソーステンプレートとしてXAMLの "アイコン"をインスタンス化するだけです。上記のXAMLを変更して、これを実行する方法と、XAMLを再利用する方法を示しました。 –

+0

それはそれを行う良い方法のようです、ありがとう! – jmw

関連する問題