는 이미 프레임 워크에서 HeaderedContentControl 및 HeaderedItemsControl ...
있습니다하지만 당신이 정말로 당신의 자신을 만들려면 당신은 아마 TemplateBinding을 사용해야합니다. 대신 다음과 같이 시도하십시오.
class MyHeaderedControl : ContentControl
{
public static readonly DependencyProperty HeaderProperty = DependencyProperty.Register(
"Header",
typeof(object),
typeof(MyHeaderedControl),
new PropertyMetadata());
public MyHeaderedControl()
{
this.DefaultStyleKey = typeof(MyHeaderedControl);
}
}
그런 다음 프로젝트에서 "\ Themes \ Generic.xaml"에 파일을 만듭니다. 이것은 특별히 명명 된 파일이며 프로젝트 루트에서 테마 폴더에 있어야합니다. ResourceDictionary가 있어야합니다. 당신의 AssemblyInfo.cs이 속성을 추가로
<ResourceDictionary
xmlns="..."
xmlns:x="..."
xmlns:c="MyControlLibrary1"
>
<Style TargetType="{x:Type c:MyHeaderedControl>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type c:MyHeaderedControl}">
<StackPanel>
<ContentControl Content="{TemplateBinding Header}" />
<ContentPresenter />
</StackPanel>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ResourceDictionary>
또한, 이미 아니라면 : 개요에 대한 그래서
[assembly: ThemeInfo(ResourceDictionaryLocation.SourceAssembly,
ResourceDictionaryLocation.SourceAssembly)]
. 일반적인 생각은 속성과 이벤트 및 로직 등이있는 몇 가지 유형의 논리적 컨트롤을 만드는 것입니다. 그런 다음 동일한 어셈블리에서 기본 테마를 제공합니다. 이것이 컨트롤이 기본적으로 표시되는 방법입니다. 컨트롤이 사용되는 모든 위치에서 기본 템플릿을 재정의하고 특정 템플릿을 평소대로 재정의 할 수 있습니다.
이렇게 사용자 설정 컨트롤에 이와 같은 맞춤 콘텐츠를 추가 할 수 있습니다. 한 번 시도해 보면 의미가 있고 울퉁불퉁하지 않을 것입니다. 더 많은 제어를하면 Generic.xaml 파일에 계속 추가하십시오.
이전 답변. 방금 다시 질문을 읽었습니다. 설정이 잘못 이해 된 것 같습니다. Custom DP가 Main.Xaml 클래스에 정의되어 있습니까? –
@Foovanadil DP는 RadAdjustableSlider.xaml.cs에 정의되어 있습니다. "주"요소는 RadAdjustableSlider : UserControl입니다. – Jake