DependencyProperty
의존 프로퍼티
public static DependencyProperty Register(string name, Type propertyType, Type ownerType);
그래서 아래는
u_DataView라는 타입에서 DataTable타입의 DataViewSource라는 프로퍼티를 생성한 것이다.
MainWindow.xaml
<igDock:SplitPane x:Name="DockedTop" igDock:XamDockManager.InitialLocation="DockedTop" Height="300">
<igDock:ContentPane x:Name="DataDock" Header="DataView">
<v:u_DataView x:Name="DataView" DataViewSource="{Binding DataSource}" />
</igDock:ContentPane>
</igDock:SplitPane>
DataView.xaml.CS
public static readonly DependencyProperty DataProperty =
DependencyProperty.Register("DataViewSource", typeof(DataTable), typeof(u_DataView));
public DataTable DataViewSource
{
get { return (DataTable)GetValue(DataProperty); }
set
{
SetValue(DataProperty, value);
Console.WriteLine("Data Init");
}
}
DataView.xaml
<Grid>
<igDp:XamDataGrid x:Name="DataViewGrid" Background="Gray"
DataSource="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type local:u_DataView}}, Path=DataViewSource, Mode=OneWay}">
<Grid>
MainViewModel
private DataTable dataViewSource;
public DataTable DataSource
{
get
{
return dataViewSource;
}
set
{
dataViewSource = value;
OnPropertyChanged("DataSource");
}
}
MainWindow가 존재하고
DataView를 UserControl로 생성하였다.
Infragitics의 DockManager를 사용하여 만들던 중
MainViewModel에서 DataView에게 DataSource를 전달해주어야 하는 상황이였는데
처음에는 x:Name="DataView"를 사용하여
MainViewModel에서 DataView를 참조하여 거기서 DataSource를 전달해줬다.
그러다가 의존프로퍼티에 대해 알게되고