DataTemplate μ‚¬μš© κ΄€λ ¨

μš°μ„  μ½”λ“œλ₯Ό λ¨Όμ € 보여 λ“œλ¦¬λ©΄

// App.Resources.xaml
<DataTemplate DataType="{x:Type plotvm:PlottingViewModel}">
    <plotv:PlottingView />
</DataTemplate>

// PlottingViewModel.cs
public class PlottingViewModel : ReactiveObject, IContext
{
	// ...
}

// PlottingView.xaml
<UserControl
    x:Class="Uttu.Plotting.Views.PlottingView"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:b="http://schemas.microsoft.com/xaml/behaviors"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:vm="clr-namespace:Uttu.Plotting.ViewModels"
    d:DataContext="{d:DesignInstance vm:PlottingViewModel}"
    mc:Ignorable="d">
   // ....
</UserControl>

// DialogWindow.xaml
<Window
    x:Class="Uttu.CAD.UI.DialogWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    WindowStartupLocation="CenterOwner"
    mc:Ignorable="d">
</Window>

// DialogService.cs
public bool? ShowDialog(IContext content)
{
	var dialog = new DialogWindow();
	dialog.Content = content;
	// ...
	return dialoShowDialog();
}

μ΄λ ‡κ²Œ μ“°κ³  μžˆμŠ΅λ‹ˆλ‹€.

화면에 μ •μƒμ μœΌλ‘œ λ‚˜μ˜€κΈ΄ ν•˜λŠ”λ°
PlottingViewκ°€ λ‘λ²ˆ 생성 λ©λ‹ˆλ‹€.

그리고 같은 λ°©μ‹μœΌλ‘œ λ‹€λ₯Έ dialog 듀도 μ“°κ³  μžˆλŠ”λ°
μœ„ 창만 μ΄μƒν•˜κ²Œ binding 된 값이 μ•ˆλ“€μ–΄ μ˜΅λ‹ˆλ‹€.

μ œκ°€ λ­”κ°€ 잘λͺ» μ“°κ³  μžˆλŠ” κ±ΈκΉŒμš”?

2개의 μ’‹μ•„μš”

λ„€ μ§€κΈˆ μ½”λ“œμ—μ„œλŠ” 두 번 μƒμ„±λ˜λŠ” 것이 λ§žμŠ΅λ‹ˆλ‹€.

이 μ½”λ“œλ„ λ·°λͺ¨λΈμ„ λ‘œμΌ€μ΄ν„°μ²˜λŸΌ κ°€μ Έμ™€μ„œ μƒμ„±ν•©λ‹ˆλ‹€.

μ§€κΈˆ μ½”λ“œλΌλ©΄ ꡳ이 IContextκ°€ μ—†κ³  Dialog의 Content에 아무것도 없어도 μœ„ μ½”λ“œ λ•Œλ¬Έμ— Viewκ°€ 생길 것 κ°™μŠ΅λ‹ˆλ‹€.

1개의 μ’‹μ•„μš”

μ½”λ“œλŠ” 문제 μ—†μ–΄ λ³΄μž…λ‹ˆλ‹€.
μž¬ν˜„ λ˜λŠ” 전체 ν”„λ‘œμ νŠΈλ₯Ό μ˜¬λ €μ£Όμ‹€ 수 μžˆλ‚˜μš”?

1개의 μ’‹μ•„μš”

μ΄κ²Œβ€¦ 사내 ν”„λ‘œμ νŠΈλΌβ€¦ 전체 κ³΅κ°œλŠ” μ–΄λ €μŠ΅λ‹ˆλ‹€β€¦

1개의 μ’‹μ•„μš”

μ•„ d:DesigneInstanceλΌλŠ” κ±Έ μ œκ°€ λͺ°λžλ„€μš”.

μ°Ύμ•„λ³΄λ‹ˆκΉŒ μΈμŠ€ν„΄μŠ€κ°€ ν• λ‹Ήλ˜λŠ” 그런게 μ•„λ‹Œκ°€ λ³΄λ„€μš”.

ν˜Όμ„  λ“œλ € μ£„μ†‘ν•©λ‹ˆλ‹€.

1개의 μ’‹μ•„μš”

μž¬ν˜„μ΄ λ˜λŠ” μ΅œμ†Œν•œμ˜ 직접 κ΅¬ν˜„ν•˜μ‹  μƒ˜ν”Œ ν”„λ‘œμ νŠΈλΌλ„β€¦?

1개의 μ’‹μ•„μš”

μ•„λ‹™λ‹ˆλ‹€. 읽어 μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€.

2개의 μ’‹μ•„μš”

이게 λ©μΉ˜κ°€ μ’€ μžˆλŠ” 녀석이라… λ°”λ‘œλŠ” μ•ˆλ λ“― ν•˜λ„€μš”.
일단 μƒ˜ν”Œ λ§Œλ“€λ©΄μ„œ 찾아봐야 κ² κ΅°μš”.
κ°μ‚¬ν•©λ‹ˆλ‹€.

2개의 μ’‹μ•„μš”

PlottingView μƒμ„±μžμ— 브레이크 포인터 μ°μ–΄μ„œ ν™•μΈν•΄λ³΄μ‹œμ£ . DataTemplateμ—μ„œ λ§Œλ“œλŠ”κ±΄ μ•Œκ² λŠ”λ° 그외에 λ‹€λ₯Έμ—μ„œ DIν•˜κ±°λ‚˜ ν• λ•Œ μƒμ„±λ˜λŠ”μ§€λ„ 확인해봐야할것 κ°™μ•„μš”.
IContent둜 λ„˜μ–΄μ˜€λŠ” μΈμžμ—λŠ” ViewModel만 λ„˜μ–΄μ˜€λŠ”κ±΄ 맞죠?

1개의 μ’‹μ•„μš”

μ‹€μ œ μ†ŒμŠ€μ—μ„  title, position, resize mode λ“± μ •λ³΄κ°’λ§Œ λ„˜μ–΄ μ˜€κ³ μš”

이걸 μ°μ—ˆμ„λ•Œ μ—¬κΈ°κ°€ λ‘λ²ˆ νƒ‘λ‹ˆλ‹€.

μ•„λŠ”λΆ„μ΄
https://blog.naver.com/vactorman/221014167271
μ•Œλ € μ£Όμ…”μ„œ λΆ„μ„μ€‘μž…λ‹ˆλ‹€.

λŒ“κΈ€ κ°μ‚¬ν•©λ‹ˆλ‹€.

1개의 μ’‹μ•„μš”

@Greg.Lee λ‹˜μ΄ μž‘μ„±ν•˜μ‹  포슀트 λ‚΄μš©μ€

Content λŒ€μƒ ViewModel이 λ³€κ²½ λ λ•Œ λ§ˆλ‹€
Viewκ°€ μƒˆλ‘­κ²Œ λ§Œλ“€μ–΄ μ Έμ„œ 그에 μΊμ‹œμ²˜λ¦¬λ₯Ό ν•˜λŠ” 방법에 λŒ€ν•œ ν¬μŠ€νŒ… 인데

μ œκ°€ μ΄ν•΄ν•œ μ§ˆλ¬Έμžλ‹˜μ˜ ν˜„μƒμ€ dialog.Content = content; μ‹œ Viewκ°€ λ‘λ²ˆ 연속 생성 λ˜λŠ” 문제둜 이해 ν–ˆμŠ΅λ‹ˆλ‹€.

ViewModel이 λ³€κ²½ λ λ•Œ λ§ˆλ‹€ Viewκ°€ 맀번 μƒμ„±λ˜λŠ” 문제라면 μ§€κ·Ήνžˆ λ‹Ήμ—°ν•œ 정상적인 ν˜„μƒμœΌλ‘œ μΊμ‹œλ“±μœΌλ‘œ ν•΄κ²°ν•˜μ‹œλ©΄ λ©λ‹ˆλ‹€.

1개의 μ’‹μ•„μš”

λ„€ μœ„μ— 말씀 ν•˜μ‹  λ‚΄μš©μ΄ λ§žμŠ΅λ‹ˆλ‹€.
μœ„μ— λ§μ”€ν•˜μ‹ κ±°μ— ShowDialog 만 ν–ˆλŠ”λ° ShowDialog λ‚΄λΆ€μ—μ„œ Viewλ₯Ό λ‘λ²ˆ 생성 ν•˜λŠ” ν˜„μƒμž…λ‹ˆλ‹€.

μœ„μ— 적은 λΈ”λ‘œκ·Έμ—μ„œ λ­”κ°€ νžŒνŠΈκ°€ μžˆλ‚˜ μ°Ύκ³  μžˆμ—ˆμŠ΅λ‹ˆλ‹€.

(μ†”μ°νžˆβ€¦ λ³΄λŠ”λ° λͺ¬λ§μΈμ§€ 잘 λͺ¨λ₯΄κ² μŠ΅λ‹ˆλ‹€β€¦ μ–΄λ ΅λ„€μš”β€¦γ…œ.γ…œ)

1개의 μ’‹μ•„μš”

ν•˜β€¦ μƒ˜ν”Œ λ§Œλ“€μ–΄μ„œ ν•΄λ³΄λ‹ˆβ€¦
1번만 λ“€μ–΄ μ˜€λ„€μš”.

λ¨Έκ°€ λ¬Έμ  μ§€ μ°Ύμ•„ 봐야 κ² μŠ΅λ‹ˆλ‹€.

2개의 μ’‹μ•„μš”

μ΄λ ‡κ²Œ κΈ°μ‘΄ μ½”λ“œμ— λ¬Έμ œκ°€ 있음이 증λͺ… λ˜μ—ˆμœΌλ‹ˆ.,

μ§€κΈˆμ²˜λŸΌ μƒ˜ν”Œ λ§Œλ“€μ–΄μ„œ

κΈ°μ‘΄ μ½”λ“œλ„ μƒ˜ν”Œκ³Ό 같이 ν•˜λ‚˜ ν•˜λ‚˜μ”© κ±·μ–΄λ‚΄λ©΄μ„œ 뭐가 λ¬Έμ œμΈμ§€ νŒŒμ•…ν•΄ λ‚˜κ°€λŠ” κ±°μ£  ! :smiley:

4개의 μ’‹μ•„μš”