WPFコンボボックスをWPFToolkit Datagrid内で動作させようとしていますが、すべてのピースを正しく配置するのに問題があります。私もコンボボックスのためのItemsSourceを提供し、私のコードビハインドのページプロパティを持っているWPF ComboBoxがソースを更新していません
private void LoadDonationGrid()
{
donationGrid.ItemsSource = from donations in entities.Donation
.Include("Family")
.Include("PledgeYear")
.Include("DonationPurpose")
from donationPurposes in entities.DonationPurpose
select new { donations, donationPurposes };
}
:私は、エンティティへのLINQを使用している、と私は、LINQクエリの結果に、全体のDataContextを設定しています:
private IEnumerable donationPurposeList;
public IEnumerable DonationPurposeList
{
get
{
if (donationPurposeList == null)
{
donationPurposeList = from dp in entities.DonationPurpose
select dp;
}
return donationPurposeList.ToList();
}
}
コンボボックスのためのXAMLは次のようになります。
<tk:DataGridTemplateColumn Header="Purpose">
<tk:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=donations.DonationPurpose.Description, Mode=TwoWay}" />
</DataTemplate>
</tk:DataGridTemplateColumn.CellTemplate>
<tk:DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<ComboBox Name="cboDonationPurpose"
SelectedValue="{Binding Path=donations.DonationPurposeID, Mode=TwoWay}"
ItemsSource="{Binding RelativeSource={RelativeSource AncestorType={x:Type Page},Mode=FindAncestor},Path=DonationPurposeList}"
DisplayMemberPath="Description"
SelectedValuePath="DonationPurposeID"
/>
</DataTemplate>
</tk:DataGridTemplateColumn.CellEditingTemplate>
</tk:DataGridTemplateColumn>
そしてすべてがすなわち、正常に動作しているようですが、適切な値を右WH点まで、コンボボックスに表示されますフォーカスがコンボボックスを離れる。その時点で、表示された値は元の値に戻り、新しく選択された値には戻りません。私はSelectedValueの代わりにSelectedItemを使ってみましたが、ComboBoxに表示されない選択値で終わります。私はちょっと謎めいています。このビットが機能しているようです。
編集3/2/09:私はまだこれ以上困惑しています。私のデータグリッドでは、単純なデータ列(「DataGridTextColumn」など)は、想定どおりの基礎データソースを更新することに注意してください。しかし、私のテンプレート化された列( "DataGridTemplateColumn")またはComboBox列( "DataGridComboBoxColumn")の更新はうまくいきません。基礎となるデータソースは決して更新されません。確かに他の人々がWPF.Toolkitデータグリッドを使用しようとしましたが、このシナリオはうまくいきましたが、そこにあるすべてのサンプルコードを見てきました。解決策)、私はなぜこれが動作していない私の頭を傷つけている。
どのような考えですか?
私はまったく同じ問題を抱えていました。これを何時間もしゃべっている。私はTwoWayへのバインディングを変更し、他のもののホスト全体を変更しようとしました。[MSDN](http://msdn.microsoft.com/en-us/library/system.windows.data.binding.updatesourcetrigger.aspx)テキストなどの場合、デフォルトがLostFocusに設定されていることを示します。 –
実際には、私はテキストボックスを使用すると私のためにLostFocusにデフォルト設定されていません。しかし、これをPropertyChangedに設定するとこれを修正します。 – tcables
優秀!! SamItedはSelectedItemバインディングでも機能します – Adarsha