Переменная обновления привязки - PullRequest
1 голос
/ 13 февраля 2012

У меня есть Большая проблема, и я пытаюсь решить ее так долго ...

Итак, что я пытаюсь сделать: - Я добавляю Button в свою Wrapgrid с файлом Codebehind - Эта кнопка должнаизменить переменную, которая является источником изображения

Datenbank database = new Datenbank();
Binding bind = new Binding("ValueGet");
bind.Source = database;
bind.Mode = BindingMode.OneWay;



System.Windows.Controls.Button champbtn = new System.Windows.Controls.Button();
champbtn.Name = "btnAhri";
champbtn.Width = 60;
champbtn.Height = 60;
champbtn.Margin = new Thickness(4);
champbtn.SetBinding(Button.CommandProperty, bind);
champbtn.ToolTip = "Ahri";
champbtn.Content = "Press me";
WrapGrid.Children.Add(champbtn);

Это работает.Я получаю свою кнопку и ее кликабельны.Теперь, как вы можете видеть, я добавил некоторые привязки команд к моему другому классу «Datenbank», который выглядит следующим образом:

public class Datenbank : INotifyPropertyChanged
{
    private string _Source;
    public string ImgSource
    {
        get { return _Source; }
        set
        {
            _Source = value;
            NotifyPropertyChanged("ImgSource");
        }
    }

    public event PropertyChangedEventHandler PropertyChanged;
    private void NotifyPropertyChanged(string propertyname)
    {
        if (PropertyChanged != null)
            PropertyChanged(this, new PropertyChangedEventArgs(propertyname));
    }

    public DelegateCommand ValueGet{ get; set; }

    public Datenbank()
    {
        ValueGet = new DelegateCommand(Ahri);
    }

    private void Ahri(object sender, EventArgs e)
    {
        System.Windows.Forms.MessageBox.Show("test");
        ImgSource = "Ahri_Square_0.png";
    }
}

Вот мой класс DelegateCommand:

public class DelegateCommand : ICommand
{
    public delegate void SimpleEventHandler(object sender, EventArgs e);
    private SimpleEventHandler _eventHandler;

    public DelegateCommand(SimpleEventHandler eventHandler)
    {
        _eventHandler = eventHandler;
    }

    public bool CanExecute(object parameter)
    {
        return true;
    }

    public event EventHandler CanExecuteChanged;

    public void Execute(object parameter)
    {
        _eventHandler(this, new EventArgs());
    }
}

Как вы можете видетьсгенерированная кнопка должна изменить строку «ImgSource»

Эта переменная привязана к графическому блоку в моем коде xaml:

<Image Height="50" Name="image1" Stretch="Fill" Width="50" Source="{Binding ImgSource, Source={StaticResource database}}" />

Это тоже хорошо.Так что теперь моя проблема в том, что когда я нажимаю сгенерированную кнопку, появляется мое «тестовое» окно сообщения, но изображение не меняет своего источника, и я действительно не знаю, как это исправить.

Когда я вручную добавляю кнопку ста же команда, что и сгенерированная кнопка выше, она работает отлично!

<Button Command="{Binding ValueGet,Source={StaticResource database}}">Press ME</Button>

Она мгновенно меняет источник изображения, и изображение появляется, но не с генерируемой, и это важно!

Поэтому я надеюсь, что кто-нибудь может мне помочь с этим, потому что я не могу найти проблему.

1 Ответ

0 голосов
/ 13 февраля 2012

Образ не был собран как ресурс приложения / сборки. Давай попробуем.

  • Перейти к обозревателю решений.
  • Щелкните правой кнопкой мыши на изображении
  • Выбрать свойства
  • Вы увидите «Построить действие»

Значение действия сборки должно быть "Ресурс".

Надеюсь, это поможет.

...