0
我正在用WPF和我的第一個MVVM項目來做我的第一個更大的項目。使用MVVM的WPF將元素動態添加到TreeView
我想用一個自定義類的列表填充一個TreeView。
我的XAML的一部分類似於這樣:
<Window>
<StackPanel>
...
<TreeView>
<TreeViewItem>
<TreeViewItem />
<TreeViewItem.ItemTemplate>
<HierarchicalDataTemplate
ItemsSource="{Binding ListOfFoo}">
<StackPanel>
<CheckBox VerticalAlignment="Center" Width="50"
Content="{Binding Bar.Description}" IsChecked="{Binding IsChosen}"/>
<TextBox Width="38" VerticalAlignment="Center"
Text="{Binding SomeText}" IsEnabled="{Binding IsChosen}" />
</StackPanel>
</HierarchicalDataTemplate>
</TreeViewItem.ItemTemplate>
</TreeViewItem>
</TreeView>
...
</StackPanel>
</Window>
在我的ViewModel屬性看起來是這樣的:
public List<Foo> ListOfFoo
{
get { return listoffoo; }
set
{
listoffoo = value;
OnPropertyChanged("ListOfFoo");
}
}
美孚擁有的屬性IsChosen,酒吧(這是另一種類型的與一個屬性說明)和SomeText。
當我執行我的代碼時,我可以看到第一個項目顯示的TreeView(它有一些UI元素,我爲了更好的閱讀而忽略了),但項目(在我的測試用例中應該是2)沒有顯示。
我用以下資源:
(誰能告訴我,其中x:類型來源於我沒有那個可以在我的X命名空間,其定義如下?
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
什麼我做錯了嗎?任何幫助表示讚賞。
這是一個簡明的例子,它是如何完成的http://stackoverflow.com/a/28994128/1228你可以創建一個新的項目並粘貼該代碼,它的工作原理。做到這一點,然後將其與您當前的項目進行比較,找出不同之處。 – Will
你沒有使用ObservableCollection,也許這是問題? –
您的x:類型問題 - 在PresentationCore中定義了xmlns。抓住Telerik的JustDecompile,加載net 4.5框架,然後點擊列表中的PresentationCore。您可以看到該名稱空間的xmlnsdefinition指向System.Windows.Markup。以下是它的實現方式https://msdn.microsoft.com/en-us/library/ms753322(v=vs.110).aspx – Will