내 프로젝트에서 사용자 정의 컨트롤에 목록을 표시하고 싶습니다. 이를 위해 ListView 컨트롤이있는 사용자 정의 컨트롤 인 CategoryView가 있습니다. 그리고 CategoryViewModel. ViewModel에는 속성 변경 이벤트를 발생시키는 목록-속성이 있습니다.
public class CategoryViewModel : NotificationObject
{
private List<string> categoryList;
public List<string> CategoryList
{
get
{
return this.categoryList;
}
set
{
this.categoryList = value;
this.RaisePropertyChanged("CategoryList");
}
}
}
이 목록은보기의 ListView 요소에 바인딩됩니다.
CategoryViewModel에서 List를 변경하면 제대로 작동하고 속성 변경 이벤트가 발생합니다. MainWindowViewModel에서 List를 변경하면. 속성 변경 이벤트가 발생하지 않으며보기가 업데이트되지 않습니다. 어떻게해야합니까?
MainWindowViewModel에서 CategoryList를 변경합니다. 목록이 올바르게 채워집니다.
CategoryViewModel categoryViewModel = new CategoryViewModel();
categoryViewModel.CategoryList = logger.ReadLogfile(this.logFileName).ToList();
당신은 다소 혼란스러운 것 같습니다. 당신은 하나가 ListView
당신의를 CategoryView UserControl
. 그것의 ItemsSource
속성은 수 만 기본보기 모델의 컬렉션을 변경할 때 데이터는, 그래서 분명히 하나 개의 컬렉션에 바인딩 하고 은 CategoryViewModel
, 하나는 영향을 미칠 것입니다 ListView
.
이 당신의 코드에서 보인다 CategoryViewModel
는 AS 설정 DataContext
에 대한 UserControl
기본보기 모델의 모음이 연결되지 않도록, ListView
. ListView
대신 기본보기 모델의 컬렉션에서 에서 데이터 바인딩 하려면 RelativeSource Binding
대신 a를 사용해야합니다 .
<ListView ItemsSource="{Binding SomeCollection, RelativeSource={RelativeSource
AncestorType={x:Type YourPrefix:YourParentType}}}" ... />
그럼에도 불구하고 이제는 컬렉션 CategoryViewModel
이 더 이상 연결되지 않으므로 여기서 수행 할 작업을 정확하게 결정하는 것이 좋습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다