gpt4 book ai didi

c# - Caliburn.Micro MVVM 框架中的对象绑定(bind)与 SelectedItem

转载 作者:行者123 更新时间:2023-12-03 10:56:10 24 4
gpt4 key购买 nike

我有以下型号:

public class Profile
{
public string name { get; set; }
public Member casemanager { get; set; }
public Member assistant { get; set; }
}

public class Member
{
public int Id { get; set; }
public int Type{ get; set; }
public string Name { get; set; }
}

在我的 ViewModel 中,我有以下对象:
  • 一个 ObservableCollection<Profile>从数据库中填充的命名配置文件;
  • 当然是 Profile 类型的 SelectedProfile;
  • 从 DB 填充的名为 ListCaseManagers 和 ListAssistants 的两个成员列表。

  • 每个对象都实现了 NotifyOfPropertyChange来自 Caliburn.Micro 的方法,并设置有属性和支持字段。

    观点:
    <StackPanel>
    <ListView ItemsSource="{Binding Profiles}" SelectedItem="{Binding SelectedProfile}" DisplayMemberPath="name" SelectionMode="Single" />
    <ComboBox ItemsSource="{Binding ListCaseManagers}" SelectedItem="{Binding SelectedProfile.casemanager }" IsSynchronizedWithCurrentItem="True" DisplayMemberPath="Name"/>
    <ComboBox ItemsSource="{Binding ListAssistants}" SelectedItem="{Binding SelectedProfile.assistant}" IsSynchronizedWithCurrentItem="True" DisplayMemberPath="Name"/>
    </StackPanel>

    在这个 XAML 中,我认为每个 ComboBox 的 SelectedItem 将直接绑定(bind)到 SelectedProfile casemanager/assistant,每次我使用 ListView 修改 SelectedProfile 时都会更改,但它似乎没有选择组合框中的项目,即使 SelectedProfile.casemanager和 SelectedProfile.assistant 不为空。

    我错过了什么?有没有使用 Caliburn.Micro 约定的简单方法?

    最佳答案

    在组合框中显示几个属性,这些属性可以让您修改列表中的 SelectedItem。

    SelectedValuePath="Id" <br/>
    SelectedValue="{Binding SelectedProfile.casemanager.Id}"

    更新 :这种方法允许通过它们的一些独特属性(ID 或名称)绑定(bind)选定的元素

    如果您需要使用 SelectedItem.. 您必须确保 Profiles 集合中的项目 Prop 与 ListCaseManagers 和 ListAssistants 中的对象相关
    var query = from p in Profiles
    join mgr in ListCaseManagers on p.casemanager==mgr
    select p;
    ? query.Count
    enter code here

    我假设你会看到 0.. 因为集合中的对象是不同的。

    关于c# - Caliburn.Micro MVVM 框架中的对象绑定(bind)与 SelectedItem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61439365/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com