0

まず、私のコードを入れてみましょう。

StockGroup エンティティ タイプ

public partial class StockGroup
{
    public StockGroup()
    {
        this.StockGroups = new HashSet<StockGroup>();
        this.Stocks = new HashSet<Stock>();
    }

    public int ID { get; set; }        
    public string GroupName { get; set; }        
    public Nullable<int> ParentID { get; set; }
    public Nullable<System.DateTime> CreatedOn { get; set; }
    public Nullable<System.DateTime> ModifiedOn { get; set; }

    public virtual ICollection<StockGroup> StockGroups { get; set; }                
    public virtual StockGroup Parent { get; set; }
    public virtual ICollection<Stock> Stocks { get; set; }

    public override string ToString() { return GroupName; }
    public override bool Equals(object obj)
    {
        StockGroup stkGrp = obj as StockGroup;
        if (stkGrp == null)
            return false;
        else
            return ID.Equals(stkGrp.ID);            
    }
    public override int GetHashCode()
    {
        return ID.GetHashCode();
    }
}   

Caliburn.Micro を使用して ComboBox にバインドする ViewModel のプロパティ。

private IList<StockGroup> _groupParents;
public IList<StockGroup> GroupParents
{
    get
    {
        return _groupParents;
    }
    set
    {
        _groupParents = value;
        NotifyOfPropertyChange(() => GroupParents);
    }
}

コンボボックス XAML

<ComboBox Name="GroupParents" ToolTip="group parents"
            Margin="5,0,5,5"
            IsSynchronizedWithCurrentItem="True"                                    
            core:Message.Attach="[Event GotFocus]=[LoadGroupParents]"                  
            IsEditable="True"
            DisplayMemberPath="GroupName"
            SelectedValuePath="ID"                  
            IsReadOnly="False">
    <ComboBox.ItemsPanel>
        <ItemsPanelTemplate>
            <VirtualizingStackPanel />
        </ItemsPanelTemplate>
    </ComboBox.ItemsPanel>
</ComboBox>

ここまではすべて問題なく、コンボボックスはデータベースからすべてのデータを取得します。ComboBox で最初のレコードが選択されています。マウスを使用して別の ComboBox 項目を選択すると、選択された項目は変更できず、最初のレコードのままです。ComboBox の選択は KeyDown では機能しますが、Mouse では機能しません。

SelectedItem には、SelectedGroupParent というプロパティがあり、マウスで変更すると値が変わりますが、ComboBox TextBox には表示されません。

これに対するいくつかの修正を提案してください。私はずっと試しましたが、うまくいきません。CollectionView へのバインディングも機能していません。

4

1 に答える 1