我无法将数据显示在树视图中。我在树视图上方有一个标签,该标签绑定到我的viewmodel并且有效。我在树视图中做错了什么?
这就是我所做的。
型号:
public class ViewConfiguration
{
public string Name { get; set; }
public List<ViewRuleSet> RuleSets { get; set; }
public ViewConfiguration(string name, params ViewRuleSet[] ruleSets)
{
this.Name = name;
this.RuleSets = new List<ViewRuleSet>(ruleSets);
}
}
public class ViewRuleSet
{
public string Name { get; set; }
public List<ViewRule> Rules { get; set; }
public ViewRuleSet(string name, params ViewRule[] rules)
{
this.Name = name;
this.Rules = new List<ViewRule>(rules);
}
}
public class ViewRule
{
public string Name { get; set; }
public ViewRule(string name)
{
this.Name = name;
}
}
视图模型:
public class MainViewModel
{
public ViewConfiguration Configuration { get; set; }
public MainViewModel()
{
var rule = new ViewRule("MyRule");
var ruleSet = new ViewRuleSet("MyRuleSet", rule);
this.Configuration = new ViewConfiguration("MyConfiguration", ruleSet);
}
}
查看:
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:vm="clr-namespace:TreeViewer.ViewModel"
xmlns:m="clr-namespace:TreeViewer.Model"
x:Class="TreeViewer.MainWindow"
Title="MainWindow" Height="350" Width="525">
<Window.DataContext>
<vm:MainViewModel/>
</Window.DataContext>
<Grid>
<Label Margin="10,10,10,0" VerticalAlignment="Top" Content="{Binding Configuration.Name}"/>
<TreeView ItemsSource="{Binding Configuration}" Margin="0,41,0,0">
<!-- Configuration template -->
<TreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding RuleSets}">
<TextBlock Foreground="Red" Text="{Binding Name}" />
<!-- RuleSet template -->
<HierarchicalDataTemplate.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding Rules}">
<TextBlock Text="{Binding Name}" />
<!-- Rule template -->
<HierarchicalDataTemplate.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}" />
</DataTemplate>
</HierarchicalDataTemplate.ItemTemplate>
</HierarchicalDataTemplate>
</HierarchicalDataTemplate.ItemTemplate>
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
</Grid>
以下是我看到的内容:(我也尝试通过代码显式设置主窗口的DataContext。this.DataContext = new MainViewModel();
)