WPF TreeView со свойствами второго уровня - PullRequest
1 голос
/ 22 октября 2019

Я работаю над проектом WPF с Treeview - и следующими объектами Model

PersonModel
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public int Age { get; set; }
    public string FullName
    {
        get { return FirstName + " " + LastName; }
    }


EmployeeModel : PersonModel
    public int MonthlySalary { get; set; }
    public int MonthlyHours { get; set; }

MainWindowViewModel
   public ObservableCollection<EmployeeModel> Employees
    {
        get { return _employees; }
        set { _employees = value; }
    }

MainWindow XAML

    <TreeView ItemsSource="{Binding Employees}">
        <TreeView.ItemTemplate>
            <HierarchicalDataTemplate ItemsSource="{Binding Employees}">
                <TreeViewItem Header="{Binding FullName}" />
            </HierarchicalDataTemplate>
        </TreeView.ItemTemplate>
    </TreeView>

Так что я получаю список сотрудников(полное имя), и что я хотел бы сделать, это иметь MonthlySalary и MonthlyHours в качестве детей:

- John Doe
  - 30 hours
  - 5.000 dollars
- Jane Doe
  - 40 hours
  - 10.000 dollars

Есть какие-либо предложения о том, как мне настроить XAML для того, чтобы перечислять данные так, как я хочу? Привет

1 Ответ

1 голос
/ 22 октября 2019

Вот вам несколько XAML:

<Window x:Class="WpfApp4.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:WpfApp4"
    Title="MainWindow"
    Width="800"
    Height="450"
    UseLayoutRounding="True">
    <Window.DataContext>
        <local:MainWindowViewModel />
    </Window.DataContext>
    <Window.Resources>
        <DataTemplate x:Key="HoursTemplate" DataType="{x:Type local:EmployeeModel}">
            <TextBlock>
                <Run Text="{Binding MonthlyHours}" />
                <Run Text=" hours" />
            </TextBlock>
        </DataTemplate>
        <DataTemplate x:Key="SalaryTemplate" DataType="{x:Type local:EmployeeModel}">
            <TextBlock>
                <Run Text="{Binding MonthlySalary}" />
                <Run Text=" dollars" />
            </TextBlock>
        </DataTemplate>
    </Window.Resources>
    <Grid>
        <TreeView ItemsSource="{Binding Employees}">
            <TreeView.ItemTemplate>
                <HierarchicalDataTemplate ItemsSource="{Binding Employees}">
                    <TreeViewItem
                        Header="{Binding FullName}"
                        IsExpanded="True">
                        <TreeViewItem
                            Header="{Binding}"
                            HeaderTemplate="{StaticResource HoursTemplate}" />
                        <TreeViewItem
                            Header="{Binding}"
                            HeaderTemplate="{StaticResource SalaryTemplate}" />
                    </TreeViewItem>
                </HierarchicalDataTemplate>
            </TreeView.ItemTemplate>
        </TreeView>
    </Grid>
</Window>

Надеюсь, это поможет.

...