나는 작업 코드에서 얻은 것으로 보아 왜이 기능이 작동하지 않는지 알 수 없지만, 새로운 수준의 코드를 추가했습니다. 나는 가지고있다. 기본적으로 ViewModel을 목록에 바인딩하면 Items가 컬렉션에 추가 될 때 바인딩이 선택됩니다. 그러나 바인딩 된 항목에 업데이트가 발생하면 업데이트되지 않습니다. 기본적으로 문자열 값이있는 사용자 정의 클래스가 포함 된 ObservableCollection이 있습니다. 해당 문자열 값이 업데이트되면 목록을 업데이트해야합니다.Silverlight Binding - 항목이 추가되었지만 업데이트가 적용되지 않을 때 바인딩합니다.
지금 디버깅 할 때 목록 항목이 올바르게 업데이트되지만 UI에 변경 내용이 반영되지 않습니다. 바운드 항목을 멤버 변수로 설정하고 null로 설정 한 다음 올바른 컬렉션으로 재설정하면 작동하지만 원하는 동작은 아닙니다.
다음은 코드의 모형입니다. 누군가 내가 잘못된 부분을 말할 수 있기를 바랍니다. 또한, 아래 코드의 모든 수준에서 INofityPropertyChanged를 구현하려고 시도했습니다.
public class Class1
{
public string ItemName;
}
public class Class2
{
private Class2 _items;
private Class2() //Singleton
{
_items = new ObservableCollection<Class1>();
}
public ObservableCollection<Class1> Items
{
get { return _items; }
internal set
{
_items = value;
}
}
}
public class Class3
{
private Class2 _Class2Instnace;
private Class3()
{
_Class2Instnace = Class2.Instance;
}
public ObservableCollection<Class1> Items2
{
get {return _Class2Instnace.Items; }
}
}
public class MyViewModel : INofityPropertyChanged
{
private Class3 _myClass3;
private MyViewModel()
{
_myClass3 = new Class3();
}
private BindingItems
{
get { return _myClass3.Items2; } // Binds when adding items but not when a Class1.ItemName gets updated.
}
}
여기에 싱글 톤 패턴의 시도가 표시되지만 실제로 게시 된 코드는 다소 엉망입니다. 'Class2'의 정적 인스턴스도 아니고 정적 인'Instance' 속성도 없습니다. 그것이 당신의 문제와 무관 한 것은 중요하지 않습니다. – AnthonyWJones
네, 싱글 톤이 작동합니다. 나는 모든 것을 타이핑하는 것 같은 느낌이 들지 않았습니다. 내가 싱글 톤이라고 말하면, 나머지 코드는 거기에 있다고 가정합니다. 나는 그 문제와 관련이 없다고 생각합니다. –
@dw : 나중에 일반적으로 짧은 코드를 게시하거나 구현 세부 사항이 누락되었다는 주석을 명시 적으로 포함하는 것이 가장 좋습니다. 문제가 덜 분명하다면 혼란 스러울 수있어서 정답을 찾기가 어려울 수 있습니다. – AnthonyWJones