2011-05-14 5 views
2

정말 이상한 XamlParseException이 발생합니다.Caliburn.Micro 질문 : XamlParseException "알 수없는 멤버를 설정할 수 없습니다. {clr-namespace : Caliburn.Micro; assembly = Caliburn.Micro} View.Model '"

메시지가 "알 수없는 멤버를 설정할 수 없습니다. '{clr-namespace : Caliburn.Micro; assembly = Caliburn.Micro} View.Model'." 뷰 모델에서

, 나는 다음과 같이 생성자에서 초기화하고있어 ObservableCollection에 있습니다 : 여기

internal class EntityListScreenViewModel : Screen 
{ 
    public EntityListScreenViewModel() 
    { 
     var list = new List<Entity>() { new Entity() { Name = "Joe" } }; 
     this.Entities = new ObservableCollection<Entity>(list); 
    } 

    public ObservableCollection<Entity> Entities { get; set; } 
} 

뷰입니다 :

<Window x:Class="WpfApp.EntityListScreenView" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Height="350" Width="525"> 
    <Grid> 
     <ListBox x:Name="Entities"/> 
    </Grid> 
</Window> 

내가 WindowManager.ShowWindow를 호출 할 때() EntityListScreenViewModel 인스턴스에서 예외가 발생합니다.

내가 이 아니면 (var list = new List<Entity>();을 사용하는 대신) 목록에 엔티티를 추가하면 예외가 발생하지 않습니다.

아무도 아이디어가 있습니까?

업데이트 : string 유형이기 위하여 ObservableCollection에 변경 시도하고 하나의 문자열을 추가, 나는 예외를하지 않았다

. 필자의 의심은 Caliburn.Micro가 ListBox의 Entity를 나타내는 뷰를 찾고있는 것입니다. 아마 그 일이 벌어 질 수 있을까요?

업데이트 2 : 나는 마침내 정말 "Caliburn.Micro"조립을 찾고 있었다 일부 구문 분석 XAML을했다 켜지면 ... ConventionManager에서 DefaultItemTemplate 가고 있었다,하지만 난 넣어 있었는지 알아 냈

다른 어셈블리의 코드. Xaml을 변경하고 문제가 사라졌습니다.

답변

0

내 의심 Caliburn.Micro 어떻게 든옵니다

예,이 일이 벌어지고 무엇에 에 뷰의 엔티티를 나타냅니다 찾고 것입니다. 기본적으로 이름 규칙을 사용하여 목록을 바인딩 할 때 Caliburn Micro는 이것을 ViewModels 목록에 바인딩하는 것으로 해석합니다. 엔티티 목록이 아닙니다. 이를 통해 ItemsControlItemTemplate에서 사용할 특정보기를 지정하지 않고도 ViewModels 목록에 바인딩 할 수 있으며 그 결과는 해당 ViewModel에 특정한보기 목록입니다.

이 문제가 발생하지 않도록하려면 수동으로 ListBox에 바인딩 할 수 있어야합니다. Caliburn Micro에서 ItemsSource 바인딩을 이미 본 경우 규칙을 무시합니다.

<ListBox x:Name="Entities" ItemsSource="{Binding Entities}"/> 
+1

도움 주셔서 감사합니다. Joe! 실제로 버그가 잘못된 어셈블리 이름에서 발생했음을 깨달았습니다. 최신 업데이트를 참조하십시오. –

0

는 잘 모르겠어요,하지만 당신은 ViewModels 네임 스페이스에 Views 네임 스페이스와 EntityListScreenViewModelEntityListScreenView를 넣어 시도 할 수 있습니다 - 물론 만약 당신이 사용자 "표준"Bootstrapper 클래스입니다.

관련 문제