目前这个方法我还不是很了解.只有两层,没有更多层的测试.这个搞了很久,因为我不懂,没继承application这个类.
有一个问题困扰着我,在模板中,是否可以用命令绑定. xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
如果可以,还请告知.--------------请您高抬贵手在下方留言.
<!--<i:Interaction.Triggers >
<i:EventTrigger EventName="MouseRightButtonUP" >--><!--DataContext="{Binding Main,Source= {StaticResource Locator}}"--><!--
<i:InvokeCommandAction Command="{Binding TxtBoxCommand,RelativeSource={RelativeSource AncestorType=local:getDataSet}}" CommandParameter="{Binding ElementName=tbk}"/>
</i:EventTrigger>
</i:Interaction.Triggers>-->
<TreeView x:Name="treeView" Margin="4,0,5,28" Grid.RowSpan="3">
<!--<TreeView.ContextMenu>
<ContextMenu>
<MenuItem Name="Copy" Header="复制标题"/>
<MenuItem Name="Stick" Header="粘贴"/>
<Separator />
<MenuItem Name="AddRoot" Header="添加根目录"/>
<MenuItem Name="AddItem" Header="添加子目录"/>
<MenuItem Name="Delete" Header="删除当前项"/>
</ContextMenu>
</TreeView.ContextMenu>-->
<TreeView.ItemTemplate >
<HierarchicalDataTemplate ItemsSource="{Binding xx}">
<TextBlock Name="tbk" Text="{Binding 部门}" MinWidth="60" MouseDown="tbk_MouseLeftButtonUp">
<!-- 这里命令绑定不会成功 <i:Interaction.Triggers >
<i:EventTrigger EventName="MouseRightButtonUP" >--><!--DataContext="{Binding Main,Source={StaticResource Locator}}"--><!--
<i:InvokeCommandAction Command="{Binding TxtBoxComm,RelativeSource={RelativeSource AncestorType=local:getDataSet}}" CommandParameter="{Binding ElementName=tbk}"/>
</i:EventTrigger>
</i:Interaction.Triggers>-->
</TextBlock>
<HierarchicalDataTemplate.ItemTemplate>
<DataTemplate>
<TextBlock Name="tbk" Text="{Binding 部门}" MinWidth="60" MouseDown="tbk_MouseLeftButtonUp">
</TextBlock>
</DataTemplate>
</HierarchicalDataTemplate.ItemTemplate>
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
后台:
public class getDataSet:Application
{
public static DataSet BindingData(SqlConnection conn)
{
SqlCommand cmd = new SqlCommand("SELECT douID,部门 FROM dbo.Table_bumen2;", conn);//table_bumen2是主表,主键被引用
// cmd.CommandType =System.Data.CommandType.StoredProcedure;
// cmd.CommandType = CommandType.Text;
using (SqlDataAdapter da = new SqlDataAdapter(cmd))
{
da.SelectCommand = cmd;
DataSet ds = new DataSet();
da.Fill(ds, "rr");//rr 就是主表里的douID,和部门 两个列 其实是treeView的rootNode(根节点)
cmd.CommandText = "SELECT 部门,douID FROM dbo.Table_bumen";//拥有外键,这个是子表
SqlDataAdapter da2 = new SqlDataAdapter(cmd);
da2.Fill(ds, "cc");//cc而这个是子表里的两列, 其中部门那一列 其实是treeView的childNode(子节点)
DataRelation dr = new DataRelation("xx", ds.Tables["rr"].Columns["douID"], ds.Tables["cc"].Columns["douID"], true);
ds.Relations.Add(dr);
return ds;
}
}
public MainWindow()
{
InitializeComponent();
DataSet ds = getDataSet.BindingData(conn);
treeView.ItemsSource = ds.Tables["rr"].DefaultView;
}