Мой код, который генерирует TreeView
из базы данных, работает, но теперь я хочу открыть новое окно на основе выбранного TreeViewItem
, но я не уверен, как получить доступ к элементу в моем обработчике событий SelectedItemChanged
.
![Compiler error in event handler](https://i.stack.imgur.com/7NOpc.png)
TreeView
Xaml:
<TreeView x:Name="Tree" SelectedItemChanged="Tree_SelectedItemChanged" ItemsSource="{Binding RootNodes}">
<TreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding rsParentChild}">
<Grid>
<materialDesign:PackIcon Kind="{Binding icon}" VerticalAlignment="Center"/>
<TextBlock Name="MenuItem" Margin="20,0,0,0" Text="{Binding NodeDescription}" FontFamily="Humanst521 Lt BT" ></TextBlock>
</Grid>
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
Код:
public Dashboard()
{
InitializeComponent();
this.DataContext = dbm;
dbm = (Model.Administration.DashboardModel)FindResource("modVar");
var dataSet = getData();
_rootNodes = dataSet.Tables["Table1"].DefaultView;
_rootNodes.RowFilter = "ParentId IS NULL";
this.DataContext = this;
}
private DataView _rootNodes;
public DataView RootNodes
{
get { return _rootNodes; }
}
internal DataSet getData()
{
DataTable dt = dbm.Menu(dbm, "Menu");
DataSet ds = new DataSet();
ds.Tables.Add(dt);
//add a relationship
ds.Relations.Add("rsParentChild", ds.Tables["Table1"].Columns["Id"], ds.Tables["Table1"].Columns["ParentId"], false);
return ds;
}
private void Tree_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<T> e)
{
string menuitem = MenusItem.text;
System.Windows.MessageBox.Show("menuitem");
}