4

これが私がこれまでに持っているものです:

<Image Source="{Binding ImageSource"} />

<Button Content"Text" ImageSource="path/image.png" />

私は何かがここに正しくないことを知っています。ImageSourceがどこで定義されているのかわかりません。

私はこれらのボタンをいくつか持っていて、それぞれに固有の画像が欲しいだけです。使用しているボタンテンプレートがあり、テキストに最適です。

<Label Content="TemplateBinding Content" />

ご協力ありがとうございます!

4

2 に答える 2

8

あなたの場合、それは非常に簡単です!

画像をリソースとしてプロジェクトに追加し、XAML で次のようなものを使用します。

<Button HorizontalAlignment="Left" Margin="20,0,0,20" VerticalAlignment="Bottom" Width="50" Height="25">
    <Image Source="image.png" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Margin="0">
    </Image>
</Button>

または、より複雑な方法:

MVVM パターンを使用すると、次のことができます。

XAML で:

<Button Focusable="False" Command="{Binding CmdClick}" Margin="0">
    <Image Source="{Binding ButtonImage}" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Margin="0">
    </Image>
</Button>

あなたのViewModelで:

private Image buttonImage;

public Image ButtonImage 
{
    get
    {
       return buttonImage;
    }
}

そして、ViewModel のコンストラクターまたはその初期化のどこかで:

BitmapImage src = new BitmapImage();
src.BeginInit();
src.UriSource = new Uri("image.png", UriKind.Relative);
src.CacheOption = BitmapCacheOption.OnLoad;
src.EndInit();

buttonImage = new Image();
buttonImage.Source = src;
于 2012-07-31T17:44:28.703 に答える
1

XAML で:

 <Button Focusable="False" Command="{Binding CmdClick}" Margin="0">
     <Image Source="{Binding ImageSource,UpdateSourceTrigger=PropertyChanged} HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Margin="0">
     </Image>
 </Button>

あなたのViewModelで:

 private BitmapImage _ImageSource;
 public BitmapImage ImageSource
 {
     get { return this._ImageSource; }
     set { this._ImageSource = value; this.OnPropertyChanged("ImageSource"); }
 }

 private void OnPropertyChanged(string v)
 {
     // throw new NotImplementedException();
     if (PropertyChanged != null)
         PropertyChanged(this, new PropertyChangedEventArgs(v));
 }
 public event PropertyChangedEventHandler PropertyChanged;

そして、ViewModel のコンストラクターまたはその初期化のどこかで:

 string str = System.Environment.CurrentDirectory;
 string imagePath = str + "\\Images\\something.png";
 this.ImageSource = new BitmapImage(new Uri(imagePath, UriKind.Absolute));

または:</p>

 string imagePath = "\\Images\\something.png";
 this.ImageSource = new BitmapImage(new Uri(imagePath, UriKind.Relative));
于 2017-08-15T11:57:47.063 に答える