public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
button1.Click += new EventHandler(button1_Click<List<object>>);
button2.Click += new EventHandler(button1_Click<object>);
}
private void button1_Click<T>(object sender, EventArgs e) where T: new()
{
var o = new T();
MessageBox.Show(o.GetType().FullName);
}
}
public partial class Form1 : Form
{
private Dictionary<string, Type> _forms = new Dictionary<string, Type>();
public Form1()
{
InitializeComponent();
_forms.Add("button1", typeof(Form));
_forms.Add("button2", typeof(Form));
}
private void button1_Click(object sender, EventArgs e)
{
var name = (sender as Button).Name;
Form form = (Form)Activator.CreateInstance(_forms[name]);
form.Show();
}
}
}
public class TreeNode
{
public int ParentId { get; set; }
public string Name { get; set; }
public ObservableCollection<TreeNode> Children { get; set; }
}
public class TreeViewModel
{
public ObservableCollection<TreeNode> Nodes { get; set; }
public TreeNode SelectedNode { get; set; }
}
public partial class MainWindow : Window
{
public TreeViewModel model { get; set; }
private int i = 1;
public MainWindow()
{
InitializeComponent();
model = new TreeViewModel();
model.Nodes = new ObservableCollection<TreeNode>();
this.DataContext = model;
model.Nodes.Add(new TreeNode() { Name = "Root", Children = new ObservableCollection<TreeNode>() });
model.Nodes.FirstOrDefault().Children.Add(new TreeNode() { Name = "Second" });
}
private void Button_Click(object sender, RoutedEventArgs e)
{
if (model.SelectedNode != null)
{
model.SelectedNode.Children.Add(new TreeNode() { Name = "Children "+i.ToString(), Children = new ObservableCollection<TreeNode>() });
}
else
{
model.Nodes.Add(new TreeNode() { Name = "Root "+i.ToString(), Children = new ObservableCollection<TreeNode>() });
}
i++;
}
private void TreeView_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e)
{
model.SelectedNode = (TreeNode)e.NewValue;
}
}
<Grid>
<TreeView HorizontalAlignment="Left" Height="337" Margin="42,34,0,0" VerticalAlignment="Top" Width="303" ItemsSource="{Binding Path=Nodes}">
<TreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding Children}">
<TextBlock Text="{Binding Name}" />
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
<Button Content="Button" HorizontalAlignment="Left" Margin="374,34,0,0" VerticalAlignment="Top" Width="75" Click="Button_Click"/>
</Grid>