2016-10-14 15 views
0

Iから選択する静的リストを持っているDataGridComboBoxColumnを作成しようとしています:ここでは、進行中、開始WPF DataGridComboBoxColumnはコンテキストメニューを表示していませんか?

完了していないが、私はXAMLで持っているものであり、それは罰金構築しながら、私はドロップのオプションを見ることができませんdown:

これは他のDataGrid.ContextMenuの仕事と同じように動作しないのはなぜわかりません。私はここで本当に簡単なものを見逃しているように感じる。

答えて

1

あなたはCompositeCollectionを使用することができます。

<DataGridComboBoxColumn Header="Status" Width="auto" IsReadOnly="False" SelectedItemBinding="{Binding Path=Value}"> 
       <DataGridColumn.HeaderStyle> 
        <Style TargetType="DataGridColumnHeader"> 
         <Setter Property="Background" Value="LightGoldenrodYellow" /> 
         <Setter Property="BorderThickness" Value="2,2,0,2" /> 
        </Style> 
       </DataGridColumn.HeaderStyle> 
       <DataGridComboBoxColumn.ItemsSource> 
        <CompositeCollection> 
         <sys:String>Not Started</sys:String> 
         <sys:String>In Progress</sys:String> 
         <sys:String>Completed</sys:String> 
        </CompositeCollection> 
       </DataGridComboBoxColumn.ItemsSource> 
      </DataGridComboBoxColumn> 

は、名前空間を追加します。

xmlns:sys="clr-namespace:System;assembly=mscorlib" 
+0

私はこのように見えますが、選択した値をセルに残す方法はありますか?別のセルをクリックすると値がなくなります。 – user3486773

+0

はい、選択したアイテムを追加してバインドします。私は答えを更新します。 – Rom

+0

データベースからの値にデフォルトのバインディングを設定することはできますか?現在の値を表示しますが、ユーザーが新しい値を選択できるようにしますか? – user3486773

0

ContextMenuServiceは何をしたいのContextMenu

を表示するためのシステムの実装があまりにも遠く何からではありません提供しますあなたはすでに持っていた。テストされ、私のために働く:

<DataGridComboBoxColumn Header="Status" Width="auto" IsReadOnly="False" > 
    <DataGridColumn.HeaderStyle> 
     <Style TargetType="DataGridColumnHeader"> 
      <Setter Property="Background" Value="LightGoldenrodYellow" /> 
      <Setter Property="BorderThickness" Value="2,2,0,2" /> 
     </Style> 
    </DataGridColumn.HeaderStyle> 
    <DataGridComboBoxColumn.CellStyle> 
     <Style TargetType="DataGridCell"> 
      <Setter Property="ContextMenu"> 
       <Setter.Value> 
        <ContextMenu> 
         <MenuItem Header="Not Started" /> 
         <MenuItem Header="In Progress" /> 
         <MenuItem Header="Completed" /> 
        </ContextMenu> 
       </Setter.Value> 
      </Setter> 
     </Style> 
    </DataGridComboBoxColumn.CellStyle> 
</DataGridComboBoxColumn> 

現在、セルクリックのために働くように設定されていますが、ヘッダーまたは両方に簡単に設定できます。

+0

これは動作しますが、セルに表示されない値をクリックすると表示されます。 – user3486773

+0

これはうまくいき、おそらく私の質問に非常に直接的に答えますが、当初のようにコンテキストメニューを表示しようとしていたことはわかりませんでしたが、これも実際にはうまくいきます! – user3486773

関連する問題