사용자 정의 컨트롤 속성을 부모 컨트롤의 속성 값으로 설정하려고합니다. 예를 들어, 내 메인 윈도우 컨트롤에 초기 구성 데이터가 있다고 가정 해 봅시다. 현재 나는 XAML에 다음 사용명명 된 부모 속성에 사용자 컨트롤 속성 묶기
<Window x:Class="MyProject.MainWindow"
x:Name="TopWindow" ... >
...
<local:MyUserControl Config="{Binding ElementName=TopWindow,
Path=MyUserControlConfig, Mode=OneTime}" />
</Window>
을하지만이 두 가지 종속성 속성의 MainWindow를 하나 (MyUserControlConfig) 필요로 나타납니다
namespace MyProject
{
public partial class MainWindow: Window
{
public static readonly DependencyProperty MyUserControlConfigProperty=
DependencyProperty.Register("MyUserControlConfig",
typeof(UserControlConfig), typeof(MainWindow));
public UserControlConfig MyUserControlConfig
{
get { return (UserControlConfig)
GetValue(MyUserControlConfigProperty); }
set { SetValue(MyUserControlConfigProperty, value); }
}
}
}
및을 MyUserControl 하나 (구성) :
을namespace MyProject
{
public partial class MyUserControl: UserControl
{
public static readonly DependencyProperty ConfigProperty=
DependencyProperty.Register("Config",
typeof(UserControlConfig), typeof(MainWindow));
public UserControlConfig Config
{
get { return (UserControlConfig) GetValue(ConfigProperty); }
set { SetValue(ConfigProperty, value); }
}
}
}
정말 변경 사항을 관찰 할 필요가 없습니다. 생성시 사용자 컨트롤에 데이터를 전달하기 만하면됩니다. 이 중 적어도 하나에 대해 간단한 속성을 사용하여 할 수 있습니까 또는이 (한 번) 초기화를 수행하려면 두 종속성 속성을 사용해야합니까?
업데이트 :을 MyUserControl 클래스에서 종속성 속성을 제거하고 간단한로 교체 만 가능했던 경우 지금
namespace MyProject
{
public partial class MainWindow: Window
{
public UserControlConfig MyUserControlConfig {get; private set;}
...
}
}
: 제이의 솔루션은 MainWindow를 클래스에 단지 CLR 속성을 우리에게 남긴다 여전히 XAML 바인딩 (또는 일부 다른 XAML 메커니즘을 통해 초기화되므로 XAML을 통해 데이터 소스를 전달할 수 있음).
UserControl의 MyUserControlConfig 속성은 종속성 속성 일 필요는 없지만 일반 CLR 속성은 정상적으로 작동합니다. Dependency Property는 속성을 다른 것으로 바인딩하고자 할 때만 필요하므로 Config는 DP –
@Meleak이어야합니다. 역으로 생각합니까? 'ConfigProperty'는 DP이어야하고'MyUserControlConfigProperty'는 필요하지 않습니다. 왜냐하면 전자는 후자에 바인딩하기 때문입니다. – Jay
@Jay : 사실 그것은 :) 다시 질문을보고 내 의견을 업데이트했습니다. –