4

私はComboBoxカスタムで持っていますItemTemplate

<ComboBox Height="20" Width="200" 
          SelectedItem="{Binding Path=SelectedDesign}"
          ItemsSource="{Binding Path=Designs}" HorizontalAlignment="Left" 
          ScrollViewer.CanContentScroll="False">

    <ComboBox.ItemTemplate>
        <DataTemplate DataType="{x:Type formdesign:FormDesignContainer}">
            <Rectangle Width="200" Height="100">
                <Rectangle.Fill>
                    <ImageBrush ImageSource="{Binding Path=ImageThumb}" Stretch="Uniform" />
                </Rectangle.Fill>
            </Rectangle>
        </DataTemplate>
    </ComboBox.ItemTemplate>

</ComboBox>

これはうまく機能します。ただし、WPFは長方形をコンボボックステキストとして描画しようとします。このテンプレートに「テキスト」を設定するにはどうすればよいですか。「テキスト」とは、選択されたアイテムを表し、アイテムが選択されたときにコンボボックスに書き込む文字列またはコントロールを意味します

言い換えれば、私はこれをしたいと思います:

ここに画像の説明を入力してください

しかし今私はこれを手に入れました

ここに画像の説明を入力してください

4

3 に答える 3

1

TextBlockを使用してSelectionBoxItemTemplateを設定してみてください。 SelectionBoxItemTemplateが読み取り専用であるように見えます。したがって、別のアプローチは、ItemContainerStyle.Templateをオーバーライドすることです。

于 2012-12-04T10:09:49.037 に答える
0

RayBurnsによるこのソリューションは良いアプローチだと思いました。ドロップダウンリストのアイテム用に2つを定義し、に表示する必要がある選択したアイテム用にもう1つを定義できます。トリガーを使用し、ビジュアルツリーをチェックして、使用するトリガーを決定します。DataTemplateCombobox

<Window.Resources>    
  <DataTemplate x:Key="NormalItemTemplate" ...>
    ...
  </DataTemplate>

  <DataTemplate x:Key="SelectionBoxTemplate" ...>
    ...
  </DataTemplate>

  <DataTemplate x:Key="CombinedTemplate">
    <ContentPresenter x:Name="Presenter"
       Content="{Binding}"
       ContentTemplate="{StaticResource NormalItemTemplate}" />
    <DataTemplate.Triggers>
      <DataTrigger
        Binding="{Binding RelativeSource={RelativeSource FindAncestor,ComboBoxItem,1}}"
        Value="{x:Null}">
        <Setter TargetName="Presenter" Property="ContentTemplate"
                Value="{StaticResource SelectionBoxTemplate}" />
      </DataTrigger>
    </DataTemplate.Triggers>
  </DataTemplate>

</Window.Resources>

...

<ComboBox
  ItemTemplate="{StaticResource CombinedTemplate}"
  ItemsSource="..."/>
于 2017-03-12T10:41:30.797 に答える
-1

テキストブロックをデータテンプレートに追加してバインドするか、長方形にContentpersenterを追加します編集:あなたが達成しようとしていたことを私は得られなかったようです、

于 2012-12-04T09:24:36.650 に答える