0

ビデオストリームを追跡するクラスaがあります。簡単にするために、自動プロパティを使用してサブクラスのプロパティのようにグループ化し、それらにアクセスします。次に、クラス全体をBindingListにバインドしましたが、NoneNestedPropertiesのみが表示されます。ネストされたプロパティも表示するにはどうすればよいですか?

public class Stream: : INotifyPropertyChanged 
{
public bool InUse {
    get { return _inUse; }
    set {
        _inUse = value;
        OnPropertyChanged("InUse");
        }
    }
}
....
internal SubCodec Codec { get; set; }
internal class SubCodec
{
    public string VideoCodec 
    {
        get { return _audioCodec; }
        set {
            _audioCodec = value;
            OnPropertyChanged("AudioCodec");
        }
    }
....
}
4

2 に答える 2

1

OnPropertyChanged子タイプではなく、親タイプで起動する必要があります。

public class Stream : INotifyPropertyChanged
{
    private SubCodec _codec;
    internal SubCodec Codec
    {
        get
        {
            return _codec;
        }
        set
        {
            _codec = value;
            //note that you'll have problems if this code is set to other parents, 
            //or is removed from this object and then modified
            _codec.Parent = this;
        }
    }
    internal class SubCodec
    {
        internal Stream Parent { get; set; }

        private string _audioCodec;
        public string VideoCodec
        {
            get { return _audioCodec; }
            set
            {
                _audioCodec = value;
                Parent.OnPropertyChanged("VideoCodec");
            }
        }
    }
}

Streamのコンストラクターにを入れて、SubCodec変更を許可しない方が簡単な場合があります。Codecこれは、 setメソッドのコメントで述べた問題を回避する1つの方法です。

于 2013-01-18T16:47:02.340 に答える
0

PropertyChangedあなたはでイベントを上げる必要がありますSubCodec

private SubCoded _codec;
internal SubCodec Codec 
{
      get {return _codec;}  
      set 
      {
            _codec = value;
            OnPropertyChanged("Codec");
       }
 }
于 2013-01-18T16:47:25.140 に答える