我希望用戶能夠在10個或更多個唯一UserControl之間進行選擇,並以任意順序將任何UserControl的任意數量的多個實例顯示在列表中。因此,該列表可能看起來像這樣的UC1,UC1,UC3,UC3,UC10,UC8等。重要的是要注意,前面示例中的兩個UC1和兩個UC3是具有與它們相關聯的不同值的不同實例。基本上,我創建了一系列命令,我將解析爲一個真實世界的操作。將ListView中的多個唯一UserControl綁定到ObservableCollection
問題:我無法將顯示在ListView中的UserControls綁定到ObservableCollection中的數據。至少,我在UserControls中的綁定是錯誤的,我不知道如何讓它們工作。
我正在使用MVVMLight。我有一個窗口控件只包含一個內容控件,它具有一個名爲CommandView的UserControl,這是我的主要顯示。 CommandView目前有幾個按鈕,其屬性綁定到CommandViewModel中的繼電器命令,這些命令將唯一的類實例添加到名爲CommandsCollection的ObservableCollection中。 ListView綁定到封裝CommandsCollection的屬性。
我在後面的代碼中使用DataTemplate和DataTemplateSelector,根據集合中該位置的類的類型選擇正確的UserControl(UC1,UC2等)。我已經成功地工作了,但是我沒有將顯示的UserControl文本框綁定回ObservableCollection,所以沒有數據顯示在UserControl的文本框中。我確實在ObservableCollection中設置了類屬性的默認值,並將集合寫入文本文件,並查看這些值是默認值。所以ObservableCollection正在看到這些值。
如何在用戶控件中設置綁定?下面是我在UC1用戶控制:
<lightext:UserControl
DataContext="{Binding VelocityCommandStatic, Source={StaticResource Locator}}">
<TextBox Text="{Binding VelocityCommandProperty.VelocityKinematic,
UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"/>
VelocityCommandStatic - 我其實是有點困惑是這個爲好,但這是在viewmodellocator.cs創建的用戶控件的對象(?)。
什麼是綁定的最佳方式? xaml綁定點是否可以直接返回到ObservableCollection?有一個問題,每個UserControl具有不同的屬性,並且我爲該集合中的每個用戶控件放置了不同的類(實例)。我會知道這些屬性,但需要在xaml中正確設置它們。也許這種方法並不理想。我可以在視圖模型中將UserControl點的屬性返回到CommandViewViewModel的observablecolleciton中的正確位置嗎?
我複製你的代碼,並有工作 - 你說得對,我確實有它過於複雜。我試着不說我花了多少時間研究我的非工作解決方案,但是它是很多的。這真的很棒 - 我非常感謝 - 謝謝!我會把它編入我的程序並嘗試。 – FloppyDisk 2013-02-17 19:38:15