내 Node
클래스 :의 ContextMenu 바운드 개체의 열거에 따라
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
namespace FrontEnd
{
public enum NodeType
{
SQLite,
Database,
TableCollection,
ViewCollection,
IndexCollection,
TriggerCollection,
ColumnCollection,
Table,
View,
Column,
Index,
Trigger
}
public class Node
{
public string Title { get; protected set; }
public NodeType Type { get; protected set; }
public ObservableCollection<Node> Nodes { get; set; }
public Node(string title, NodeType type)
{
this.Title = title;
this.Type = type;
this.Nodes = new ObservableCollection<Node>();
}
}
}
내 XAML이 :
내가 달성하기 위해 노력하고 있고 실패는ContextMenu
을 결정하는 것입니다 무엇
<TreeView Name="dbTree" Padding="0,5,0,0">
<TreeView.Resources>
<ContextMenu x:Key="ScaleCollectionPopup">
<MenuItem Header="New Scale..."/>
</ContextMenu>
<ContextMenu x:Key="ScaleItemPopup">
<MenuItem Header="Remove Scale"/>
</ContextMenu>
</TreeView.Resources>
<TreeView.ItemContainerStyle>
<Style TargetType="TreeViewItem">
<Style.Triggers>
<DataTrigger Binding="{Binding Type, RelativeSource={RelativeSource Self}}" Value="NodeType.Column">
<Setter Property="ContextMenu" Value="{StaticResource ScaleItemPopup}" />
</DataTrigger>
</Style.Triggers>
</Style>
</TreeView.ItemContainerStyle>
<TreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding Nodes}">
<StackPanel Orientation="Horizontal" Margin="0,0,0,4">
<Image Source="{Binding Converter={StaticResource StringToImageConverter}}" />
<TextBlock Text="{Binding Title}" Padding="5,0,0,0" />
</StackPanel>
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
에 기초 사용하기 Type
바운드 속성은 Node
클래스입니다.
테이블 또는 뷰 "1000 행 선택"& "SHOW CREATE SQL"을 표시하려면 다른 유형에 대해 다른 옵션을 정의하고 싶습니다.
원하는 효과를 얻으려면 올바른 방법은 무엇입니까?
데이터 템플릿 및 데이터 트리거를 사용하면 원하는대로 메뉴를 전환 할 수 있습니다. – pushpraj
@pushpraj 위와 같은 방법으로 볼 수는 있지만 작동하지 않습니다. 누군가 내 실수를 밝힐 수 있기를 바랍니다. – sprocket12
Treeview의 ItemsSource 란 무엇입니까? 또한''을 시도하십시오. 출력 창에 표시되는 데이터 바인딩 오류를 확인하십시오. 필요한 경우 스타일 리소스로 리소스를 이동하려고 할 수도 있습니다. –
pushpraj