首先,我是新手,刚刚开始学习WPF。
我有一个员工类,如下所示:
public partial class MainWindow : Window
{
public ObservableCollection<Employee> Emp { get; private set; }
public MainWindow()
{
InitializeComponent();
Emp = new ObservableCollection<Employee>();
Emp.Add(new Employee(){Name = "Anuj"});
Emp.Add(new Employee() { Name = "Deepak" });
Emp.Add(new Employee() { Name = "Aarti" });
Emp[0].SubEmployee.Add(new Employee(){Name = "Tonu"});
Emp[0].SubEmployee.Add(new Employee() { Name = "Monu" });
Emp[0].SubEmployee.Add(new Employee() { Name = "Sonu" });
Emp[2].SubEmployee.Add(new Employee() { Name = "Harsh" });
Emp[2].SubEmployee.Add(new Employee() { Name = "Rahul" });
Emp[2].SubEmployee.Add(new Employee() { Name = "Sachin" });
this.DataContext = Emp;
}
}
我在MainWindow类中创建了一个可观察的员工集合,并将datacontext设置为相同的集合,如下所示:
<Grid>
<ListView ItemsSource="{Binding Emp}">
<ListView.ItemTemplate>
<DataTemplate DataType="{x:Type vm:Employee }">
<Expander Header="{Binding Name}">
<ListView ItemsSource="{Binding SubEmployee}">
<ListView.ItemTemplate>
<DataTemplate>
<TextBlock Text ="{Binding Name}"/>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</Expander>
</DataTemplate>
</ListView.ItemTemplate> >
</ListView>
</Grid>
现在,在xaml.cs中,我编写了以下代码:
{{1}}
现在我应该使用扩展器按钮获取Employee对象的集合,单击按钮应该给我所有的SubEmployee。但不幸的是,我没有得到预期的结果。
请帮我解决绑定问题。
答案 0 :(得分:0)
您的DataContext
为ObservableCollection<Employee>
,因此外LitView
应将ItemsSource
直接绑定到当前DataContext
。换句话说,Emp
中没有DataContext
属性。您的上下文是Emp
属性
<ListView ItemsSource="{Binding}">
<ListView.ItemTemplate>
<!-- .... -->
</ListView.ItemTemplate>
</ListView>
或按原样保留XAML,并更改了将DataContext
设置为
this.DataContext = this;
修改强>
认为这是复制/粘贴错误,但由于您抱怨无效操作异常错误,因为>
标记末尾的第二个ItemTemplate
</ListView.ItemTemplate> >
答案 1 :(得分:0)
我已经测试了你的代码。 def createIssue(issue) do
content = Poison.encode!(%{"issue" => %{"project_id" => 1, "subject" => "Example", "priority_id" => 1, "tracker_id" => 1}})
HTTPotion.post("#{url}/issues.json", [body: content, basic_auth: auth()])
end
设置不正确。
我也给了文字一种颜色。
试试这个。在我的最后工作完美!
XAML:
DataContext
代码背后:
<Grid>
<ListView ItemsSource="{Binding Emp}">
<ListView.ItemTemplate>
<DataTemplate DataType="{x:Type vm:Employee }">
<Expander Header="{Binding Name}">
<ListView ItemsSource="{Binding SubEmployee}">
<ListView.ItemTemplate>
<DataTemplate>
<TextBlock Foreground="Black" Text ="{Binding Name}"/>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</Expander>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</Grid>
其他数据类保持不变!