画像を動的に変更する問題があります。WPFを使用してC#で画像を動的に変更
背景情報: 私は選択可能な要素を含むリストボックスを持っています。これらの項目は食品のカテゴリです。 ユーザーが食品の1つをクリックすると、ページの別の場所の画像を変更したいと思います。
私のXAMLファイルが含まれています。私は、画像m_mainImageという変数を持っている私の食糧クラスで
FoodCollection foods = (FoodCollection)this.FindResource("FoodCategory");
Food f = foods[foodListBox.SelectedIndex];
Title_TextBlock.Text = f.Name;
bigImage = f.MainImage;
:
<Image Name="bigImage" Stretch="Fill" Grid.Row="0" Grid.Column="0" HorizontalAlignment="Center" VerticalAlignment="Center"/>
をユーザが「bigImage」は変化するであろうことを確信食品カテゴリをクリックしたとき:
public class Food
{
...
Image m_mainImage = new Image();
String m_mainImagePath = string.Empty;
...
public string MainImagePath{
get { return m_mainImagePath; }
set
{
m_mainImagePath = value;
m_mainImage.BeginInit();
m_mainImage.Source = new BitmapImage(new Uri(m_mainImagePath, UriKind.RelativeOrAbsolute));
m_mainImage.EndInit();
RaisePropertyChanged("MainImage");
RaisePropertyChanged("MainImagePath");
}
}
public Image MainImage
{
get { return m_mainImage; }
}
public event PropertyChangedEventHandler PropertyChanged;
protected void RaisePropertyChanged(string name)
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(name));
}
}
}
私は画像を「解決」しなければならなかったが、私はunclだったそれが意味するものの耳。 は、私は、これはそれを行うだろうと思った:
m_mainImage.BeginInit();
m_mainImage.Source = new BitmapImage(new Uri(m_mainImagePath, UriKind.RelativeOrAbsolute));
m_mainImage.EndInit();
申し訳ありませんが、私はまだWPFとC#に新しいです。 ありがとうございます。
ああ、私はどのようにDataContextを設定するのですか? –
@Aero - もっとも簡単なのは 'this.DataContext = this;'がコンストラクタの最高レベルで設定されることですが、より具体的にすることができます。 – ChrisF