私は2つ持っていComboBoxes
ます。1つは列挙値のリストにバインドされ、もう1つはカスタムクラスオブジェクトのリストにバインドされ、DisplayMemberPath
プロパティが設定されています。
列挙値へのComboBox
バインドは暗黙的TextBlock
なスタイルを適用しますが、プロパティComboBox
を使用するは適用DisplayMemberPath
しません。
Snoopを使用すると、両方ComboBoxes
がまったく同じコントロールのセット(を<ContentPresenter>
含む<TextBlock>
)でレンダリングされることを確認できますがTextBlock
、セットを含まComboBox
ない場合は5が含まれ、セットを含む場合は含まれません。DisplayMemberPath
Margin
DisplayMemberPath
<Grid.Resources>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="Margin" Value="5" />
</Style>
</Grid.Resources>
<ComboBox Grid.Row="0" Grid.Column="1"
ItemsSource="{Binding EnumCollection}"
SelectedItem="{Binding SelectedEnum}" />
<ComboBox Grid.Column="1" Grid.Row="2"
ItemsSource="{Binding SomeCollection}"
SelectedItem="{Binding SelectedItem}"
DisplayMemberPath="Name" />
どうしてこれなの?ComboBox
そして、列挙型が暗黙TextBlock
のスタイルを継承しないようにするにはどうすればよいですか?