WPF GroupBoxと同様のカスタムコントロールを作成する必要があります。私はVS 2015で標準のWPFカスタムコントロールライブラリテンプレートから開始し、このように私のCustomGroupBoxコントロールを定義した:ContentControlはControlTemplateのコンテンツを表示しません
public class CustomGroupBox : ContentControl
{
static CustomGroupBox()
{
DefaultStyleKeyProperty.OverrideMetadata(typeof(CustomGroupBox), new FrameworkPropertyMetadata(typeof(CustomGroupBox)));
}
}
そして、仕様に応じて、私のカスタムのGroupBoxを開発するラインの次最小限のセットを追加しました:デバッグに
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:CustomGroupBox">
<Style TargetType="{x:Type local:CustomGroupBox}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type local:CustomGroupBox}">
<Border Background="{TemplateBinding Background}"
BorderBrush="Gray" BorderThickness="3" CornerRadius="3">
<ContentControl />
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ResourceDictionary>
と発展、私は私のカスタムコントロールのテストフォームを作成:
<Window x:Class="CustomGroupBoxClient.MainWindow"
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"
xmlns:local="clr-namespace:CustomGroupBoxClient"
xmlns:ctrl="clr-namespace:CustomGroupBox;assembly=CustomGroupBox"
mc:Ignorable="d"
Title="MainWindow" Height="350" Width="525">
<Grid>
<ctrl:CustomGroupBox Margin="5">
<StackPanel Orientation="Vertical">
<TextBlock>Text Block #1</TextBlock>
<TextBlock>Text Block #2</TextBlock>
</StackPanel>
</ctrl:CustomGroupBox>
</Grid>
</Window>
私はこれに関連する多くのマニュアルや記事を再読んだ
:私はこのフォームを起動したとき
はしかし、私は私のカスタムコントロールの境界線ではなく、コンテンツ(2のTextBlockの)を参照してください私のControlTemplateのContentControlが指定されたコンテンツを表示しない理由をまだ理解できません。私の問題を解決するには?
'ContentControl'の代わりに' ContentPresenter'を使うか、明示的にバインドしてみてください: ' 'これは、あなたのカスタムコントロールのcontentプロパティが 'Content'と呼ばれていると仮定していますが、もしあなたが' ContentControl'から継承しているのであれば、これはあまり前提ではありません。 –