我有一個MyResult對象,它包含一個「List MyItems」列表。將列表添加到c#TreeView
我想添加到一個c#WPF TreeView。
這樣做的最佳方式是什麼?
有沒有一個一步一步的教程呢?因爲我越來越所有的MVVM類等混淆
感謝
我有一個MyResult對象,它包含一個「List MyItems」列表。將列表添加到c#TreeView
我想添加到一個c#WPF TreeView。
這樣做的最佳方式是什麼?
有沒有一個一步一步的教程呢?因爲我越來越所有的MVVM類等混淆
感謝
我假設在你的列表中選擇的對象具有某種名單。 如果這是caseyou應該看看使用hierarchicaldatatemplate。
一個簡單的例子可能如下所示。這是來自我使用radtreeview的段,但它應該是一樣的。
<!-- xaml -->
<UserControl.Resources>
<Style x:Key="_treeViewItemStyle" TargetType="telerik:RadTreeViewItem">
<Setter Property="Visibility" Value="{Binding IsVisible, Converter={StaticResource VisibilityConverter}}" />
<Setter Property="IsEnabled" Value="{Binding IsEnabled}"/>
<Setter Property="IsSelected" Value="{Binding IsSelected, Mode=TwoWay}"/>
<Setter Property="IsExpanded" Value="{Binding IsExpanded, Mode=TwoWay}"/>
<Setter Property="HorizontalAlignment" Value="Left"/>
</Style>
<UI:HierarchicalDataTemplate x:Key="_treeViewTemplate"
ItemsSource="{Binding NodeItems}"
>
<TextBlock Margin="3,0,0,0" Text="{Binding Header}">
</TextBlock>
</UI:HierarchicalDataTemplate>
</UserControl.Resources>
<telerik:RadTreeView x:Name="_pageNavigator" ItemsSource="{Binding InspNavList}" ItemDoubleClick="SendFocusToPage" SelectedItem="{Binding SelectedNavItem, Mode=TwoWay}" ItemTemplate="{StaticResource _treeViewTemplate}" ItemContainerStyle="{StaticResource _treeViewItemStyle}" />
沒有最好的辦法做事情。呃,實際上有,但是你需要更多關於系統本身和當前情況的數據(以及一些深刻的知識)來了解做事的最佳方式。那麼,把它放在一邊。
如果您想使用綁定,你可以做到以下幾點:
一個。在你的頁面/窗口/用戶控件中設置DataContext屬性來指向你的對象(MyResult)。
b。在您的XAML文件中,使用以下片段將treeView項綁定到該列表:
<TreeView ItemsSource={Binding MyItems}>
....
</TreeView>
c。享受結果。
有幾件事情需要考慮: 1.您應該爲MyItems對象實現DataTemplate。默認實現只需將ToString()結果放入樹視圖。 2.如果您想要使用分層數據(意思是具有層次的數據),您應該實現HierarchicalDataTemplate並指定樹中每個節點的子節點。 3.您應該考慮使用ObservableCollection進行正確的綁定 - 這樣,每次添加/刪除列表中的項目都會調用UI中的更改。
我發現這是完美的開始:http://stackoverflow.com/questions/6415037/populate-treeview-from-list-of-file-paths-in-wpf – Stef 2012-04-30 07:29:56
+1這工作。謝謝。 – Stef 2012-04-11 10:50:56