1

我有一个带有 GridView 列的组合框:

...
            <GridView AllowsColumnReorder="True" ColumnHeaderToolTip="Info test">
               <GridViewColumn Header="Number" Width="120">
                  <GridViewColumn.CellTemplate>
                     <DataTemplate>
                        <ComboBox ItemsSource="{Binding Path=extensions}" Width="105" IsEditable="True" HorizontalAlignment="Center" Margin="0,0,0,0" BorderThickness="0">
                           <ComboBox.Resources>
                              <sys:Double x:Key="{x:Static SystemParameters.VerticalScrollBarWidthKey}">15</sys:Double>
                           </ComboBox.Resources>
                        </ComboBox>
                     </DataTemplate>
                  </GridViewColumn.CellTemplate>
               </GridViewColumn>
            </GridView>
...

在后面的代码中,“扩展”是ObserverableCollection<string>100% 被初始化和填充的(这是在类构造函数中):

public partial class MyForm : Window
{
   ...
   public ObservableCollection<string> extensions;
   ...

   public MyForm()
   {
      ...
      Initialize();
   }

   private Initialize()
   {
       extensions = new ObservableCollection<string>();
       extensions.Add("x100");
       extensions.Add("x101");
   }
}

但是当应用程序在组合框出现时运行时,绑定永远不会发生。需要哪些额外步骤才能完成/正确?

4

1 回答 1

2

首先不要使用公共字段,而是使用属性。据我所知,公共领域不适用于绑定。

public ObservableCollection<string> extensions {get; private set;}

其次,可能组合框的数据上下文未设置为 MyForm 实例。试试这个

<ComboBox ItemsSource="{Binding Path=extensions, RelativeSource={RelativeSource AncestorType={x:Type MyForm}}}" ... >
于 2012-10-12T14:35:27.637 回答