[문의]WPF Class 별로 바인딩 되었을 때 다른 View 시현

@WPF 세심하신 예제 소스코드에 감탄하고 갑니다. :smile:

image

지금 구현해주신 부분에서 정말 간단하게 추가해 본다면 요렇게 해볼 수 도 있겠습니다.



1. ContentContent 안에 PropertyView 바인딩

<TextBlock.ToolTip>
	<Grid>
		<!-- 어떻게 설정해야 Tooltip에서 클래스 타입별 UserControl을 설정해서
		팝업을 할 수 있을까?-->
        <ContentControl Content="{Binding Item.PropertyView}"/>
    </Grid>
</TextBlock.ToolTip>

2. BaseClass.cs에 PropertyView 속성 추가

public UserControl PropertyView { get; protected set; }

3. 각각의 PropertyView 유저컨트롤 인스턴스 생성 및 데이터 생성자에 할당

protected override Task OnActivateAsync(CancellationToken cancellationToken)
{
    // PropertyView 생성
    UCCarPropertyView carPropertyView = new UCCarPropertyView();
    UCPersonPropertyView personPropertyView = new UCPersonPropertyView();

    Items = new ObservableCollection<ItemViewModel>();
    // 객체마다 각각 생성자에 보내주기~ 
    Items.Add(new ItemViewModel(1, new CarClass(11, "소나타", 4, "현대", "승용차", carPropertyView)));
    Items.Add(new ItemViewModel(2, new CarClass(12, "싼타페", 4, "현대", "SUV", carPropertyView)));
    Items.Add(new ItemViewModel(3, new CarClass(13, "쏘렌토", 4, "현대", "SUV", carPropertyView)));
    Items.Add(new ItemViewModel(4, new CarClass(14, "GV80", 6, "현대", "SUV", carPropertyView)));
    Items.Add(new ItemViewModel(5, new PersonClass(16, "홍길동", 20, "남성", personPropertyView)));
    Items.Add(new ItemViewModel(6, new PersonClass(17, "홍길순", 25, "여성", personPropertyView)));
    Items.Add(new ItemViewModel(7, new PersonClass(18, "고길동", 30, "남성", personPropertyView)));
    Items.Add(new ItemViewModel(8, new PersonClass(19, "고길순", 28, "여성", personPropertyView)));

    return base.OnActivateAsync(cancellationToken);
}

각 모델 생성자에서도 PropertyView에 할당하기

public CarClass(int id, string name, int engine, string brand, string carType, UserControl propertyView)
    : base(id)
{
    CarName = name;
    Engine = engine;
    Brand = brand;
    CarType = carType;

    // 여기 또는 base 에서 할당
    // PersonClass에서도 동일하게~
    PropertyView = propertyView;
}

결과

타입 A 프로퍼티 창

image

타입 B 프로퍼티 창

image

4개의 좋아요