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

好的,经过大量的谷歌搜索,我想通了。

但似乎你只是对 ElementStyle 做同样的事情,再次使用组合框的目标类型,即使它在不编辑时似乎没有显示 ComboBox。

<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 回答