WPF обязательный вопрос - PullRequest
       16

WPF обязательный вопрос

1 голос
/ 31 марта 2011

Например, у меня есть:

MainWindows.cs

public partial class MainWindow : Window
        {
            public List<Player> List;
            public MainWindow()
            {
                InitializeComponent();
                List = new List<Player>()
                           {
                               new Player() {Id = 1, Name = "Tom"},
                               new Player() {Id = 2, Name = "Bob"},
                               new Player() {Id = 3, Name = "Any"},
                           };
                comboBox1.DataContext = List;

            }

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

XAML: <ComboBox ItemsSource="{Binding}" DisplayMemberPath="Name"/>

Как мне (нужно) установить List как DataContextиз XAML?(и удалите "comboBox1.DataContext = List" из выделенного кода)

Ответы [ 2 ]

2 голосов
/ 31 марта 2011

, если вы не используете MVVM, вам не нужно делать , но в любом случае использование может создать список как свойство окна, например

public List<Player> List {get;set;}

а затем в XAML вы можете использовать RelativeSource для привязки к окну:

<ComboBox ItemsSource="{Binding Path=List, RelativeSource={RelativeSource AncestorType=Window, Mode=FindAncestor}}" DisplayMemberPath="Name"/>

или вы можете дать имя вашему окну:

<Window .... x:Name="MyWindow" ..>

, а затем использовать ElementName впереплет, вот так:

<ComboBox ItemsSource="{Binding Path=List, ElementName=MyWindow}" DisplayMemberPath="Name"/>
2 голосов
/ 31 марта 2011

Быстрое исправление - установка ItemsSource вашего ComboBox непосредственно в коде (вместо DataContext), но для того, чтобы использовать правильные привязки, вам понадобится ViewModel или хотя бы XAML DataContext.

Также вы должны выбрать более уникальное имя, чем List, для своего Списка, как, например, Players - хорошая практика - использовать форму множественного числа типа Объектов в Списке.

...