<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<local:GridComboBox x:Name="SttsValDtl"
IsEnabled="{Binding Path=CanUse}"
ItemsSource="{Binding Path=リスト名}"
DisplayMemberPath="表示名"
SelectedValuePath="内部の値"
SelectedValue="{Binding Path=SttsVal}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>

List<List<long>> a = new List<List<long>>();
a.Add(new List<long>(new long[] { 54 }));
a.Add(new List<long>(new long[] { 54, 99 }));
a.Add(new List<long>(new long[] { 99, 98, 1000 }));
a.Add(new List<long>(new long[] { 100, 102, 1, 2 }));
a.Add(new List<long>(new long[] { 999, 1000, 3, 4, 5 }));

var mstRmTypeCmp = helper.GetTable<MST_RM_TYPE_CMP>();

if (a.Count > 0)
{
//ベースとなるクエリの作成
List<long> baseWhereLongList = a[0];
var query = from RmTypeCmp in mstRmTypeCmp
where baseWhereLongList.Contains(RmTypeCmp.RM_TYPE_ID)
select new { RRTI = RmTypeCmp.REAL_RM_TYPE_ID };

a.RemoveAt(0);

foreach( List<long> lstLong in a)
{
List<long> whereLongList = lstLong; //ここでWhere文に使うリストの領域を確保

//ひたすらInnerJoinする作業
query = query.Join((from RmTypeCmp in mstRmTypeCmp
where whereLongList.Contains(RmTypeCmp.RM_TYPE_ID)
select new { RRTI = RmTypeCmp.REAL_RM_TYPE_ID }),
元のクエリ => 元のクエリ.RRTI,
第一引数のクエリ => 第一引数のクエリ.RRTI,
(元のテーブル, 後のテーブル) => new { RRTI = 元のテーブル.RRTI });
}

logger.SqlDebugLog(query);
}

List<List<long>> a = new List<List<long>>();
a.Add(new List<long>(new long[] { 54 }));
a.Add(new List<long>(new long[] { 54, 99 }));
a.Add(new List<long>(new long[] { 99, 98, 1000 }));
a.Add(new List<long>(new long[] { 100, 102, 1, 2 }));
a.Add(new List<long>(new long[] { 999, 1000, 3, 4, 5 }));

var mstRmTypeCmp = helper.GetTable<MST_RM_TYPE_CMP>();

if (a.Count > 0)
{
//ベースとなるクエリの作成
List<long> baseWhereLongList = a[0];
var query = from RmTypeCmp in mstRmTypeCmp
where baseWhereLongList.Contains(RmTypeCmp.RM_TYPE_ID)
select new { RRTI = RmTypeCmp.REAL_RM_TYPE_ID };

a.RemoveAt(0);

foreach( List<long> lstLong in a)
{
List<long> whereLongList = lstLong; //ここでWhere文に使うリストの領域を確保

//ひたすらInnerJoinする作業
query = query.Join((from RmTypeCmp in mstRmTypeCmp
where whereLongList.Contains(RmTypeCmp.RM_TYPE_ID)
select new { RRTI = RmTypeCmp.REAL_RM_TYPE_ID }),
元のクエリ => 元のクエリ.RRTI,
第一引数のクエリ => 第一引数のクエリ.RRTI,
(元のテーブル, 後のテーブル) => new { RRTI = 元のテーブル.RRTI });
}

logger.SqlDebugLog(query);
}

データグリッドの文字右寄せ

<DataGridTextColumn Header="ヘッダー" Width="60" MinWidth="60" MaxWidth="60" Binding="{Binding bindData}" IsReadOnly="False" CanUserResize="True">
<DataGridTextColumn.ElementStyle>
<Style TargetType="TextBlock">
<Setter Property="HorizontalAlignment" Value="Right"/>
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>

コンボボックスへのデータ挿入

<ComboBox DisplayMemberPath="表示する値" SelectedValuePath="内で持つ値" Grid.Row="1" Height="23" HorizontalAlignment="Stretch" Margin="0" VerticalAlignment="Center" Width="Auto" Grid.Column="1" Name="cb" />

データグリッドでのコンボボックス表示

<DataGridComboBoxColumn x:Name="colmunSaleType" SelectedValueBinding="{Binding Path=バインディングする値}" DisplayMemberPath="表示する値" SelectedValuePath="内で持つ値" Header="ヘッダー" Width="80" MinWidth="80" MaxWidth="80" IsReadOnly="False" CanUserResize="False" />