17. UserControl
01.
더보기
![](https://blog.kakaocdn.net/dn/wlFpy/btsLdjHDSK2/gP1O1yXnY4NiZnkYkFun20/img.png)
![](https://blog.kakaocdn.net/dn/b4J7yi/btsLeh9UfYg/hnIESbcTgkSjXrFUguAeFk/img.png)
![](https://blog.kakaocdn.net/dn/bMiYxe/btsLdyj8TsF/6EbcGCTEIOkyiEUl5fUB6K/img.png)
![](https://blog.kakaocdn.net/dn/cQImGm/btsLdwUG783/GYfYA9KGEk1PW8DJLUsNgK/img.png)
![](https://blog.kakaocdn.net/dn/qzRiz/btsLfAHCzqh/GFT4Kb1BjhjyYApOMuwRM1/img.png)
![](https://blog.kakaocdn.net/dn/CM5Cj/btsLesDrltP/mCcvuHnIU5k64FU3AyYX00/img.png)
![](https://blog.kakaocdn.net/dn/zg4Cg/btsLdZV9N0K/vMw1RKJfEmsH1tP68iKGk1/img.png)
1.
![](https://blog.kakaocdn.net/dn/wlFpy/btsLdjHDSK2/gP1O1yXnY4NiZnkYkFun20/img.png)
![](https://blog.kakaocdn.net/dn/b4J7yi/btsLeh9UfYg/hnIESbcTgkSjXrFUguAeFk/img.png)
![](https://blog.kakaocdn.net/dn/bMiYxe/btsLdyj8TsF/6EbcGCTEIOkyiEUl5fUB6K/img.png)
2.
![](https://blog.kakaocdn.net/dn/cQImGm/btsLdwUG783/GYfYA9KGEk1PW8DJLUsNgK/img.png)
d:DesignHeight="80"
d:DesignWidth="380">
<Grid Background="#AAe5e5e5">
<StackPanel Margin="4">
<TextBlock Text="Name LastName"
FontSize="20"
FontWeight="Bold" />
<TextBlock Text="example@domain.com"
FontSize="15"
Foreground="DodgerBlue" />
<TextBlock Text="(123)456 7890"
FontStyle="Italic" />
</StackPanel>
</Grid>
3.
![](https://blog.kakaocdn.net/dn/qzRiz/btsLfAHCzqh/GFT4Kb1BjhjyYApOMuwRM1/img.png)
private Contact contact;
public Contact Contact
{
get { return contact; }
set { contact = value; }
}
4.
![](https://blog.kakaocdn.net/dn/CM5Cj/btsLesDrltP/mCcvuHnIU5k64FU3AyYX00/img.png)
<Grid Background="#AAe5e5e5">
<StackPanel Margin="4">
<TextBlock Text="Name LastName"
FontSize="20"
FontWeight="Bold"
x:Name="nameTextBlock"/>
<TextBlock Text="example@domain.com"
FontSize="15"
Foreground="DodgerBlue"
x:Name="emailTextBlock"/>
<TextBlock Text="(123)456 7890"
FontStyle="Italic"
x:Name="phoneTextBlock"/>
</StackPanel>
</Grid>
![](https://blog.kakaocdn.net/dn/zg4Cg/btsLdZV9N0K/vMw1RKJfEmsH1tP68iKGk1/img.png)
nameTextBlock.Text = contact.Name;
emailTextBlock.Text = contact.Email;
phoneTextBlock.Text = contact.Phone;
02.
더보기
![](https://blog.kakaocdn.net/dn/qGUSn/btsLeAnFAkb/mARP0nuheB2LNletKCbjsK/img.png)
![](https://blog.kakaocdn.net/dn/bYaqpg/btsLc2MUu2P/T0Q1Fr96cwWAkzuWr6nfR0/img.png)
![](https://blog.kakaocdn.net/dn/ZHU3U/btsLfwygbfe/CcIkbAQmzkbchSdei3kjkK/img.png)
![](https://blog.kakaocdn.net/dn/dkwVEZ/btsLdOtEfUk/XQMyyE0vbkkgnhCxnb8K41/img.png)
![](https://blog.kakaocdn.net/dn/MPuDC/btsLePlgCS3/8iHMBAirSb1P91iwG6EKv0/img.png)
1.
![](https://blog.kakaocdn.net/dn/qGUSn/btsLeAnFAkb/mARP0nuheB2LNletKCbjsK/img.png)
xmlns:uc="clr-namespace:ContactApp.Control"
2.
![](https://blog.kakaocdn.net/dn/bYaqpg/btsLc2MUu2P/T0Q1Fr96cwWAkzuWr6nfR0/img.png)
![](https://blog.kakaocdn.net/dn/ZHU3U/btsLfwygbfe/CcIkbAQmzkbchSdei3kjkK/img.png)
public Contact Contact
{
get { return (Contact)GetValue(ContactProperty); }
set { SetValue(ContactProperty, value); }
}
public static readonly DependencyProperty ContactProperty = DependencyProperty.Register(
"Contact", // 의존 속성으로 등록될 프로퍼티
typeof(Contact), // 등록할 의존 프로퍼미 데이터 타입
typeof(ContactControl), // 의존 속성을 소유하게 될 Owner
new PropertyMetadata( // 의존 속성으로 등록될 프로퍼티 초기값 설정
new Contact()
{
Name = "Name LastName",
Phone = "(123)456 7890",
Email = "email@email.com"
},
SetText) // 등록된 프로퍼티 변경시 콜백
);
private static void SetText(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
ContactControl control = (ContactControl)d;
if (control != null)
{
control.nameTextBlock.Text = ((Contact)e.NewValue).Name;
control.emailTextBlock.Text = ((Contact)e.NewValue).Email;
control.phoneTextBlock.Text = ((Contact)e.NewValue).Phone;
}
}
3.
![](https://blog.kakaocdn.net/dn/dkwVEZ/btsLdOtEfUk/XQMyyE0vbkkgnhCxnb8K41/img.png)
![](https://blog.kakaocdn.net/dn/MPuDC/btsLePlgCS3/8iHMBAirSb1P91iwG6EKv0/img.png)
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="HorizontalContentAlignment"
Value="Stretch" />
</Style>
</ListView.ItemContainerStyle>
<ListView.ItemTemplate>
<DataTemplate>
<uc:ContactControl Contact="{Binding}"/>
</DataTemplate>
</ListView.ItemTemplate>
03.
더보기
![](https://blog.kakaocdn.net/dn/zEFTn/btsLeuvLZAC/0LWUjp1m7CKYyASeHAnZw0/img.png)
![](https://blog.kakaocdn.net/dn/8c2DX/btsLfoau069/MUSAr4XIe0zXatqkC3FePK/img.png)
1.
![](https://blog.kakaocdn.net/dn/zEFTn/btsLeuvLZAC/0LWUjp1m7CKYyASeHAnZw0/img.png)
Owner = Application.Current.MainWindow;
WindowStartupLocation = WindowStartupLocation.CenterOwner;
2.
![](https://blog.kakaocdn.net/dn/8c2DX/btsLfoau069/MUSAr4XIe0zXatqkC3FePK/img.png)
Owner = Application.Current.MainWindow;
WindowStartupLocation = WindowStartupLocation.CenterOwner;
04.