【问题标题】:ComboBox Selection not Working in WPF with Mouse组合框选择在 WPF 中无法使用鼠标
【发布时间】:2013-10-13 21:42:39
【问题描述】:

首先让我输入我的代码。

StockGroup EntityType

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();
    }
}   

ViewModel 中的一个属性,它使用 Caliburn.Micro 绑定到 ComboBox。

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 选择适用于 KeyDown 但不适用于 Mouse。

对于 SelectedItem,我有一个名为 SelectedGroupParent 的属性,当我通过鼠标更改时,它的值会发生变化,但它不会显示在 ComboBox TextBox 中。

请对此提出一些解决方案。我已经尝试了所有方法,但它不起作用。即使绑定到 CollectionView 也不起作用。

【问题讨论】:

  • 视图模型上是否有一个包含SelectedItem 的属性?
  • 它将被 Caliburn.Micro 自动绑定。我有一个名为 SelectedGroupParent 的属性,当我通过鼠标更改时,它的值会发生变化,但它没有显示在 ComboBox TextBox 中。
  • 那么你的问题是什么,你说 SelectedItem 在视图模型中正在改变,但在你的问题中你说 SelectedItem 不能改变?
  • 感谢您的宝贵时间。
  • 不客气,虽然我帮不上什么忙。

标签: c# wpf xaml combobox caliburn.micro


【解决方案1】:

那是我的错。

实际上,我正在重新加载 GotFocus 上的 ComboBox,这使得所选项目始终位于索引 1。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多