簡體   English   中英

如何將Combobox綁定到帶有ListBox依賴的SelectedItem的ObservableCollection?

[英]How to bind a Combobox to an ObservableCollection with SelectedItem dependant on ListBox?

我有一個組合框,它使用綁定從自定義類型的ObservableCollection繪制項目。 我已經設置了DisplayMemberPath,以便它顯示正確的字符串和內容。 現在,我擺弄了SelectedItem / SelectedValue。 它需要依賴於ListBox的選定項目,該項目綁定到另一個自定義類型的另一個ObservableCollection,但具有與ComboBox列表相同類型的屬性。

如何使用MVVM綁定它? 可能嗎?

我的代碼在這里:

MainWindowViewModel.cs

private ObservableCollection<Plugin<IPlugin>> erpPlugins;
    public ObservableCollection<Plugin<IPlugin>> ERPPlugins
    {
        get
        {
            return erpPlugins;
        }
        set
        {
            erpPlugins = value;
            OnProprtyChanged();
        }
    }

    private ObservableCollection<Plugin<IPlugin>> shopPlugins;
    public ObservableCollection<Plugin<IPlugin>> ShopPlugins
    {
        get
        {
            return shopPlugins;
        }
        set
        {
            shopPlugins = value;
            OnProprtyChanged();
        }
    }

    private ObservableCollection<Connection> connections;
    public ObservableCollection<Connection> Connections
    {
        get {
            return connections;
        }
        set
        {
            connections = value;
        }
    }

    public MainWindowViewModel()
    {
        instance = this;

        ERPPlugins = new ObservableCollection<Plugin<IPlugin>>(GenericPluginLoader<IPlugin>.LoadPlugins("plugins").Where(x => x.PluginInstance.Info.Type == PluginType.ERP));
        ShopPlugins = new ObservableCollection<Plugin<IPlugin>>(GenericPluginLoader<IPlugin>.LoadPlugins("plugins").Where(x => x.PluginInstance.Info.Type == PluginType.SHOP));
        Connections = new ObservableCollection<Connection>
        {
            new Connection("test") { ERP = ERPPlugins[0].PluginInstance, Shop = ShopPlugins[0].PluginInstance } // Debug
        };
    }

Connection.cs

public class Connection
{
    public string ConnectionName { get; set; }
    public IPlugin ERP { get; set; }
    public IPlugin Shop { get; set; }

    public Connection(string connName)
    {
        ConnectionName = connName;
    }
}

還有我的ComboBox的XAML代碼段:

<ComboBox 
    Margin="10,77,232,0" 
    VerticalAlignment="Top" 
    x:Name="cmbERP" 
    ItemsSource="{Binding ERPPlugins}" 
    SelectedItem="{Binding ElementName=lbVerbindungen, Path=SelectedItem.ERP}" 
    DisplayMemberPath="PluginInstance.Info.Name"
    >

好的,我通過在“連接插件”中更改IPlugin類型來解決它。 為什么我首先使用IPlugin超出了我的了解。 但是像這樣,我到處都有相同類型的插件。

感謝您的幫助,感激不盡

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM