簡體   English   中英

WPF組合框數據綁定填充和所選項目

[英]WPF Combo Box Data Binding Fill and Selected Item

我需要在部門列表中填充組合框,並在員工部門中設置該組合框的選定項目

模特部

public class Department
{
    public int Id { get; set; }
    public string Name { get; set; }
}

模范員工:

public class Employee
{
    public int Id { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public Department Department { get; set; }
}

視圖模型

public class ViewModel
{
    public Employee Employee { get; set; }
    public ObservableCollection<Department> Departments{ get; set; }

    public ViewModel()
    {
        Employee new Employee ()
        {
            FirstName = "Harry",
            LastName = "Park",
            Department = new Department { Id = 1, Name = "Department 2" },
        };
        Departments= new ObservableCollection<Department> ()
        {
            new Department{ Id=1, Name="Department 1" },
            new Department{ Id=2, Name="Department 2" },
            new Department{ Id=2, Name="Department 3" },
        };
}

XAML

        <Grid DataContext="{StaticResource ViewModel
              <ComboBox 
                ItemsSource="{Binding Department
                SelectedValue="{Binding Employee.Department
                <ComboBox.ItemTemplate>
                    <DataTemplate>
                        <StackPanel>
                            <TextBlock Text="{Binding Name}" />
                        </StackPanel>
                    </DataTemplate>
                </ComboBox.ItemTemplate>
            </ComboBox>
       </Grid>

你能幫助我嗎?

這段代碼的工作-確實經過測試:

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
        this.DataContext = new ViewModel();
    }
}

public class Department
{
    public int Id { get; set; }
    public string Name { get; set; }
}

public class Employee
{
    public int Id { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public Department Department { get; set; }
}


public class ViewModel
{
    public Employee Employee { get; set; }
    public ObservableCollection<Department> Departments { get; set; }

    public ViewModel()
    {
        Departments = new ObservableCollection<Department>()
        {
            new Department{ Id=1, Name="Department 1" },
            new Department{ Id=2, Name="Department 2" },
            new Department{ Id=2, Name="Department 3" },
        };
        Employee = new Employee()
        {
            FirstName = "Harry",
            LastName = "Park",
            Department = Departments.First(),
        };
    }


<Grid>
    <ComboBox Height="30"
            ItemsSource="{Binding Departments}"
            SelectedValue="{Binding Employee.Department}">
        <ComboBox.ItemTemplate>
            <DataTemplate>
                <StackPanel>
                    <TextBlock Text="{Binding Name}" />
                </StackPanel>
            </DataTemplate>
        </ComboBox.ItemTemplate>
    </ComboBox>
</Grid>
<Grid DataContext="{StaticResource ViewModel}">
    <ComboBox ItemsSource="{Binding Departments}" 
            SelectedItem="{Binding Employee.Department}"
        <ComboBox.ItemTemplate>
            <DataTemplate>
                <StackPanel>
                    <TextBlock Text="{Binding Name}" />
                </StackPanel>
            </DataTemplate>
        </ComboBox.ItemTemplate>
    </ComboBox>
</Grid>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM