0

私は次のクラスを持っています:

public class Sticky : INotifyPropertyChanged {

    // ... some members

    private BitmapImage _frontPic;
    [DataMember]
    public BitmapImage FrontPic {
        get {
            return _frontPic;
        }
        set {
            _frontPic = value;
            Changed("FrontPic");
            Changed("FrontBrush");
        }
    }
}

このXAMLにデータバインドしようとしています:

<Image Width="173" Height="173" Source="{Binding FrontPic}" />

私のPhoneApplicationPageでこのコードを使用してPhotoChooserTaskを起動した後:

public Sticky Sticky { get; set; }

protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e) {
    Sticky = new Sticky();
    DataContext = Sticky;
}

private void ShowFrontPicPicker(object sender, RoutedEventArgs e) {
    var t = new PhotoChooserTask();
    t.PixelHeight = 173;
    t.PixelWidth = 173;
    t.ShowCamera = true;

    t.Completed += (s, ev) => {
        if (ev.TaskResult == TaskResult.OK) {
            var img = new BitmapImage();
            img.SetSource(ev.ChosenPhoto);
            Sticky.FrontPic = img;
        }
    };

    t.Show();
}

ただし、私の画像は空白のままです。データバインディングなしで Image.Source プロパティを Image に直接割り当てると、すべてが機能します。他のプロパティのデータバインドは機能しますが、問題があると思われるのは画像だけです。画像の DataBinding を機能させるにはどうすればよいですか?

4

1 に答える 1

0

問題を発見!PhotoChooserTask の完了したコールバックは UI スレッドで実行されないため、次の呼び出しをDispatcher.BeginInvoke追加する必要があります。

t.Completed += (s, ev) => Dispatcher.BeginInvoke(() => {
    // do stuff...
});
于 2012-04-21T19:45:03.437 に答える