1

私は GridView 列を持つ ComboBox を持っています:

...
            <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 に答える