4

編集モードでないときに、DataGridComboBoxColumn に選択した項目のテキストを表示させるにはどうすればよいでしょうか? また、編集モードのコンボ ボックスで、選択した項目のテキストを最初に表示するようにすることはできますか?

ここに私のXAMLがあります:

<DataGridComboBoxColumn Header="Formatter" 
                        SelectedItemBinding="{Binding Path=Format}">
  <DataGridComboBoxColumn.ElementStyle>
    <Style TargetType="">
      <Setter Property="Text" Value="{Binding Path=FormatView.Name}" />
    </Style>
  </DataGridComboBoxColumn.ElementStyle>
  <DataGridComboBoxColumn.EditingElementStyle>
    <Style TargetType="ComboBox">
      <Setter Property="ItemsSource" Value="{Binding Path=DefinedFormatters}" />
      <Setter Property="IsDropDownOpen" Value="True" />
      <Setter Property="ItemTemplate">
        <Setter.Value>
          <DataTemplate>
            <TextBlock Text="{Binding Path=Name}"></TextBlock>
          </DataTemplate>
        </Setter.Value>
      </Setter>
    </Style>
  </DataGridComboBoxColumn.EditingElementStyle>
</DataGridComboBoxColumn>
4

3 に答える 3

5

これは、DataGridComboBoxColumn で役に立った唯一のリソースでした。

http://msdn.microsoft.com/en-us/library/system.windows.controls.datagridcomboboxcolumn.aspx

他のすべて (MSDN 以外のサイトで見つけたもの) は誤解を招くものでした。

于 2012-02-01T23:32:53.467 に答える
4

わかりました、私はたくさんのグーグルでそれを理解しました。

しかし、編集していないときは ComboBox を表示していないように見えますが、ElementStyle に対しても同じことをコンボ ボックスのターゲット タイプで行っているようです。

<DataGridComboBoxColumn Header="Formatter" SelectedItemBinding="{Binding Path=Format}">
        <DataGridComboBoxColumn.ElementStyle>
            <Style TargetType="ComboBox">
                <Setter Property="ItemsSource" Value="{Binding Path=DefinedFormatters}" />
                <Setter Property="IsDropDownOpen" Value="True" />
                <Setter Property="ItemTemplate">
                    <Setter.Value>
                        <DataTemplate>
                            <TextBlock Text="{Binding Path=Name}"></TextBlock>
                        </DataTemplate>
                    </Setter.Value>
                </Setter>
            </Style>
        </DataGridComboBoxColumn.ElementStyle>
        <DataGridComboBoxColumn.EditingElementStyle>
            <Style TargetType="ComboBox">
                <Setter Property="ItemsSource" Value="{Binding Path=DefinedFormatters}" />
                <Setter Property="IsDropDownOpen" Value="True" />
                <Setter Property="ItemTemplate">
                    <Setter.Value>
                        <DataTemplate>
                            <TextBlock Text="{Binding Path=Name}"></TextBlock>
                        </DataTemplate>
                    </Setter.Value>
                </Setter>
            </Style>
        </DataGridComboBoxColumn.EditingElementStyle>
    </DataGridComboBoxColumn>
于 2011-07-04T05:04:39.027 に答える
0

私はかなり途方に暮れていますが、おそらく次のことを試してください: ElementStyle を削除し、代わりに DisplayMemberPath を設定します。

<DataGridComboBoxColumn Header="Formatter" SelectedItemBinding="{Binding Path=Format}" DisplayMemberPath="Name">

パスも FormatView.Name である可能性があります。データ構造を明確に把握していません。また、DataGridComboBoxColumn の ItemsSource をどのように設定しましたか?

于 2011-06-29T08:21:44.777 に答える