(WPFToolkit Datagrid 내에서) WPF 콤보 박스를 사용하려고하는데 모든 조각을 올바르게 정렬하는 데 문제가 있습니다. 내가 엔티티에 Linq를 사용하고, 그리고 내가 LINQ 쿼리의 결과를 전체 데이터 컨텍스트를 설정 해요 :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 };
}
나는 또한 콤보 상자의 ItemsSource를 제공 내 코드 숨김의 페이지 속성이 있습니다 :
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>
그리고 모든 예는, 적절한 값이 바로 포인트 어까지 콤보 상자에 표시됩니다 올바르게 작동하는 것 같다 포커스가 ComboBox를 벗어납니다. 이 시점에서 표시된 값은 새로 선택된 값이 아닌 원래 값으로 돌아갑니다. SelectedValue 대신 SelectedItem을 사용하여 시도했지만 ComboBox에 표시되지 않는 선택한 값으로 끝납니다. 나는 다소 신비스럽게 생각합니다.이 비트가 작동해야하는 것처럼 보입니다.
편집 됨 3/2/09 : 나는이 문제에 여전히 의문을 품고 있습니다. 내 DataGrid에서 간단한 데이터 열 (예 : "DataGridTextColumn")은 기본 데이터 소스를 예상대로 업데이트합니다. 그러나 내 템플릿이있는 열 ("DataGridTemplateColumn") 또는 ComboBox 열 ("DataGridComboBoxColumn")에 대한 업데이트는 작동하지 않습니다. 기본 데이터 소스는 결코 업데이트되지 않습니다. 분명히 다른 사람들은 WPF.Toolkit 데이터 격자를 사용하려고 시도했으며이 시나리오를 작동 시키려고했지만 - 거기서 모든 샘플 코드를 살펴 봤는데 기본적으로 말한대로 (내 제약 조건 내에서) 솔루션), 그래서 왜 작동하지 않습니다 내 머리를 긁적입니다.
의견이 있으십니까?
나는 정확히 같은 문제가있었습니다. 이것을 몇 시간 동안 어지럽 혔다. TwoWay에 대한 바인딩을 변경하고 다른 많은 호스트를 변경하려고 시도했습니다. [MSDN] (http://msdn.microsoft.com/en-us/library/system.windows.data.binding.updatesourcetrigger.aspx) Text와 같은 경우 기본값이 LostFocus로 설정됨을 나타냅니다. –
사실, 텍스트 상자를 사용할 때 실제로 LostFocus를 기본값으로 설정하지 않습니다. PropertyChanged로 설정하면이 문제가 해결됩니다. – tcables
우수 !! SamIted는 SelectedItem 바인딩에 대해서도 작동합니다. – Adarsha