我是WPF世界的新手.我有包含的treeView
树视图
任务 - >
Portfolio
---->portfolio1
Run Code Online (Sandbox Code Playgroud)
基准
Category
------>Name1 etc..
Run Code Online (Sandbox Code Playgroud)
我想知道如何在WPF中获取父节点值?例如,如果我选择portfolio1如何获取父 - 父值.在这种情况下Mandate.
简而言之,我想知道用户是否点击Name1 - >我应该获得基准测试,如果用户点击portfolio1,那么我应该获得投资组合.
非常感谢您的指导.
感谢和问候,
我创建了一个Treeview并使用堆栈面板为树中的每个节点包含一个复选框,图标图像和文本.这些节点是在运行时创建的.我也有一个按钮对象.xaml在下面.
我遇到的问题是,当点击click me按钮时,我需要遍历树视图,如果选中了复选框,则执行一些功能.
有谁知道如何检查树中节点的复选框是否被检查,从C#代码后面???
<Window x:Class="WPF_Explorer_Tree.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:WPF_Explorer_Tree"
Title="KryptoG" Height="424" Width="815" Loaded="Window_Loaded">
<Window.Resources>
<local:HeaderConverter x:Key="formatter" />
</Window.Resources>
<Grid>
<TreeView x:Name="foldersItem" SelectedItemChanged="foldersItem_SelectedItemChanged" Background="#FFFFFFFF" BorderBrush="#FFFFFFFF" Foreground="#FFFFFFFF" Margin="0,0,236,112" AllowDrop="True" Visibility="Visible">
<TreeView.Resources>
<Style TargetType="{x:Type TreeViewItem}">
<Setter Property="HeaderTemplate">
<Setter.Value>
<DataTemplate>
<StackPanel Name="ST" Orientation="Horizontal">
<CheckBox VerticalAlignment="Center" Name="SelectedCheckBox" IsChecked="False" Checked="CheckBox_Checked" Unchecked="CheckBox_Unchecked" />
<Image Name="img" Width="20" Stretch="Fill"
Source="{Binding
RelativeSource={RelativeSource
Mode=FindAncestor,
AncestorType={x:Type TreeViewItem}},
Path=Header,
Converter={x:Static local:HeaderToImageConverter.InstanceIcon}}"
/>
<TextBlock VerticalAlignment="Center" Text="{Binding
RelativeSource={RelativeSource
Mode=FindAncestor,
AncestorType={x:Type TreeViewItem}},
Path=Header,
Converter={StaticResource formatter}}"
/>
</StackPanel>
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
</TreeView.Resources>
</TreeView>
<TreeView HorizontalAlignment="Right" Margin="0,0,12,12" …Run Code Online (Sandbox Code Playgroud) 我有一个包含3列Grid的网格,TreeViewItem其中HierarchicalDataTemplate包含以下定义:
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="1*" />
<ColumnDefinition Width="Auto" />
...
Run Code Online (Sandbox Code Playgroud)
我想设置网格的宽度,以便它完全占用TreeViewItem内部的所有可用空间TreeView.因此,网格的第三列应该在内部对齐TreeView.
如何获得网格宽度的正确值?
我知道,对于ListBox ItemTemplate,我可以通过将其绑定到以下来设置宽度ScrollContentPresenter:
Width="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=ScrollContentPresenter, AncestorLevel=1}, Path=ActualWidth}"
Run Code Online (Sandbox Code Playgroud)
这个技巧不起作用TreeView,因为孩子们的可用空间比根树视图项目少.
有任何想法吗?
如何以编程方式从c#中使用xmlDataProvider进行databindet的wpf树视图中选择rootnode?
在我的例子中,Rootnode来自DataType ="cards":
<cards>
<category />
<card />
<card />
<card />
</cards>
Run Code Online (Sandbox Code Playgroud)
我试过这个:
//AddNode
xmlDataProvider.Document.DocumentElement["cards"].AppendChild(newNode);
//Select rootnode
treeView.SelectedValuePath = "cards";
//the hard way:
//treeView.SelectedValuePath = ((XmlNode)treeView.Items.GetItemAt(0)).Name.LocalName";
treeView.Focus();
Run Code Online (Sandbox Code Playgroud)
但没有选择Rootnode :-(
在我的ASP.NET应用程序中,使用了Treeview控件并启用了复选框.在那个树视图中,如果我检查treenode想要在特定的已检查节点中显示不同的颜色.见下文
foreach (treenode node in treeview.nodes)
{
if (node.checked == true)
{
"change the color of the node"
}
}
Run Code Online (Sandbox Code Playgroud)
我过去常常检查以下节点编码.但没有标记来检查已检查节点的颜色
protected void TreeView1_TreeNodeCheckChanged(object sender, TreeNodeEventArgs e)
{
if (e.Node.ChildNodes.Count > 0)
{
CheckAllChildNodes(e.Node, e.Node.Checked);
}
if (e.Node.ChildNodes.Count == 0)
{
CheckAllParentNodes(e.Node);
}
}
private void CheckAllChildNodes(System.Web.UI.WebControls.TreeNode treeNode, bool nodeChecked)
{
foreach (System.Web.UI.WebControls.TreeNode node in treeNode.ChildNodes)
{
node.Checked = nodeChecked;
if (node.ChildNodes.Count > 0)
{
this.CheckAllChildNodes(node, nodeChecked);
}
}
}
private void CheckAllParentNodes(System.Web.UI.WebControls.TreeNode treeNode)
{
if (treeNode.Parent != null)
{ …Run Code Online (Sandbox Code Playgroud) 是否可以在树视图中隐藏节点(对Root起作用的方式相同)而不必从树本身中删除节点?目的是能够在树的某些项目上提供过滤器和“显示/隐藏”选项。
所有帮助表示赞赏
谢谢
我想使用gtk Treeview显示两级分层数据(使用模型gtk Treestore)
数据采用以下格式:
**First(parent)** level
col_a, col_b, col_c, col_d, col_e
val_a, val_b, val_c, val_d, val_e
**Second(child)** level
col_x, col_y, col_z
val_x, val_y, val_z
Run Code Online (Sandbox Code Playgroud)
数据层次结构如下:
> val_a1, val_b1, val_c1, val_d1, val_e1
val_x1, val_y1, val_z1
val_x2, val_y2, val_z2
> val_a2, val_b2, val_c2, val_s2, val_e2
val_x3, val_y3, val_z3
> val_a3, val_b3, val_c3, val_d3, val_e3
> val_a4, val_b4, val_c4, val_d4, val_e4
val_x4, val_y4, val_z4
val_x5, val_y5, val_z5
Run Code Online (Sandbox Code Playgroud)
以下pygtk代码是我尝试过的(修改了gtk教程中的代码)
import pygtk
pygtk.require('2.0')
import gtk
data = [
[('val_a1', 'val_b1', 'val_c1', 'val_d1', 'val_e1'), ('val_x1', 'val_y1', …Run Code Online (Sandbox Code Playgroud) 在跟进我之前关于这个问题的问题的答案时,我已经取得了一些进展,并且正在寻找下一点指导.简而言之,我无法使用gtkmm应用程序从Glade加载Treeview.
首先,这是源头.班级:
typedef struct
{
Gtk::Window *window_info;
Gtk::TreeView *treeview_info;
Glib::RefPtr<Gtk::ListStore> liststore_info;
class InfoColumns : public Gtk::TreeModel::ColumnRecord
{
public:
InfoColumns() { add(time); add(message); }
Gtk::TreeModelColumn<string> time;
Gtk::TreeModelColumn<string> message;
} info_columns;
}UiElements;
class GuiManager
{
Glib::RefPtr<Gtk::Builder> builder;
UiElements elements;
public:
GuiManager();
void info_handler(string msg);
};
Run Code Online (Sandbox Code Playgroud)
定义:
GuiManager::GuiManager()
{
builder = Gtk::Builder::create();
builder->add_from_file("GUI3.glade");
builder->get_widget("window_info", elements.window_info);
builder->get_widget("treeview_info", elements.treeview_info);
//these two methods of loading the liststore appear to function identically
elements.liststore_info = Glib::RefPtr<Gtk::ListStore>::cast_dynamic(builder->get_object("liststore_info"));
// elements.liststore_info = Gtk::ListStore::create(elements.info_columns);
elements.treeview_info->set_model(elements.liststore_info);
//if I append the columns, …Run Code Online (Sandbox Code Playgroud) 我已经创建了一个TreeView,但是当我调用特定的函数时,我希望能够隐藏某些列.所以这个TreeView最初是创建的,但是当我调用一个函数时,可以说除了[trackArtist]之外所有的列都被隐藏了.我该怎么做呢?我可以通过在函数中重写TreeView的部分(我想要出现的列)来使它工作,但这看起来非常多余.
def some_function(self):
self.tree = ttk.Treeview(self.stationBuilderMenuMiddleFrame)
ttk.Style().configure("displayField", background="#850664", foreground="#000000", fieldbackground="#FFFFFF")
ysb = ttk.Scrollbar(self.stationBuilderMenu, orient=tk.VERTICAL, command=self.tree.yview)
xsb = ttk.Scrollbar(self.stationBuilderMenu, orient=tk.HORIZONTAL, command=self.tree.xview)
self.tree.configure(yscrollcommand=ysb.set)
self.tree.configure(xscrollcommand=xsb.set)
self.tree["columns"]=("trackNumber", "trackTitle", "artistCat", "artistDisplay", "trackArtist", "album",
"albumLabel", "composer", "year", "trackDuration", "albumAsin", "albumItunes", "ISRC",
"filename", "albumCoverName", "notes")
self.tree.column("trackNumber", stretch=0, anchor=N)
self.tree.column("trackTitle", stretch=0, anchor=N)
self.tree.column("artistCat", stretch=0, anchor=N)
self.tree.column("artistDisplay", stretch=0, anchor=N)
self.tree.column("trackArtist", stretch=0, anchor=N)
self.tree.column("album", stretch=0, anchor=N)
self.tree.column("albumLabel", stretch=0, anchor=N)
self.tree.column("composer", stretch=0, anchor=N)
self.tree.column("year", stretch=0, anchor=N)
self.tree.column("trackDuration", stretch=0, anchor=N)
self.tree.column("albumAsin", stretch=0, anchor=N)
self.tree.column("albumItunes", stretch=0, anchor=N)
self.tree.column("filename", stretch=0, anchor=N)
self.tree.column("albumCoverName", stretch=0, anchor=N) …Run Code Online (Sandbox Code Playgroud)