リスト「List MyItems」を含む MyResult オブジェクトがあります。
これを ac# WPF TreeView に追加したいと思います。
そうするための最良の方法は何ですか?
このためのステップバイステップのチュートリアルはありますか? 私はすべてのMVVMクラスなどと混同しているので.
ありがとう
物事を行う最善の方法はありません。実際にはありますが、最善の方法を知るには、システム自体と現在の状況 (および深い知識) に関するデータがもう少し必要です。まあ、それはさておき。
バインディングを使用する場合は、次のようにします。
を。ページ/ウィンドウ/ユーザー コントロールで、DataContext プロパティをオブジェクト (MyResult) を指すように設定します。
b. XAML ファイルで次のスニペットを使用して、treeView 項目をそのリストにバインドします。
<TreeView ItemsSource={Binding MyItems}>
....
</TreeView>
c. 結果をお楽しみください。
ただし、考慮すべき点がいくつかあります。 1. MyItems オブジェクトに DataTemplate を実装する必要があります。デフォルトの実装では、ToString() の結果を取得してツリー ビューに配置します。2. 階層データ (レベルを持つデータ) を使用する場合は、HierarchicalDataTemplate を実装し、ツリー内のすべてのノードの子を取得する場所を指定する必要があります。3. 正しいバインドのために ObservableCollection を使用することを検討する必要があります。この方法では、リスト内の項目を追加/削除するたびに UI の変更が呼び出されます。
リスト内のオブジェクトには、ある種のリストがあると想定しています。その場合は、hierarchydatatemplateを使用して確認する必要があります。
簡単な例は次のようなものです。これは、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}" />