リストボックスから継承したコントロールがあります。XAML は次のようになります。
<ListBox x:Class="Bibliothek.myDockControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300"
x:Name="myListBox"
>
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="Height" Value="{Binding ItemHeight, UpdateSourceTrigger=PropertyChanged}"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ListBoxItem">
<Border BorderThickness="1" BorderBrush="Black" CornerRadius="2">
<DockPanel>
<StackPanel DockPanel.Dock="Top" Background="LightGray">
<DockPanel Margin="2,2,2,2">
<TextBlock x:Name="Beschreibung" DockPanel.Dock="Left" VerticalAlignment="Center" FontWeight="Bold" Text="{Binding Header,UpdateSourceTrigger=PropertyChanged}"></TextBlock>
</DockPanel>
</StackPanel>
<ContentPresenter DockPanel.Dock="Top" Content="{Binding Content}"></ContentPresenter>
</DockPanel>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ListBox.ItemContainerStyle>
Textblock と contentpresenter のバインディングがあります。これらのバインディングは、私自身のタイプ DockItem からのものです。次のようになります。
public class DockItem
{
public string Header { get; set; }
public object Content { get; set; }
}
バインディングのこれらのプロパティは、コントロールをテストしたウィンドウで設定され、リストボックスの itemsource にバインドされている典型的な observablecollection からのものです。
コードビハインドで宣言されている上記(ItemHeight)のようなHeightプロパティのバインディングを追加したとき、データコンテキストの設定方法がわかりません。リスト ボックス コントロールのコード ビハインドでデータ コンテキストを次のように設定すると、次のようになります。次に、ヘッダーとコンテンツのバインディングが機能しません。