7

I have this simple application that adds some items to a combobox:

public partial class Window1 : Window { private ObservableCollection<string> _dropDownValues = new ObservableCollection<string>(); public ObservableCollection<string> DropDownValues { get { return _dropDownValues; } set { _dropDownValues = value; } } private string _selectedValue; public string SelectedValue { get { return _selectedValue; } set { _selectedValue = value; } } public Window1() { InitializeComponent(); DataContext = this; DropDownValues.Add("item1"); DropDownValues.Add("item1"); DropDownValues.Add("item1"); DropDownValues.Add("item1"); DropDownValues.Add("item1"); DropDownValues.Add("item1"); } } 

And here is the XAML file:

<Window x:Class="WpfApplication2.Window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="Window1" Height="300" Width="300"> <StackPanel HorizontalAlignment="Left" Margin="10"> <ComboBox Margin="0 0 0 5" ItemsSource="{Binding DropDownValues}" SelectedValue="{Binding SelectedValue}" Width="150"/> </StackPanel> </Window> 

Can someone show me how can I set the DataContext from the xaml file instead of initializing in the constructor ?

Thanks.

2 Answers 2

25

Just change the Window to bind DataContext to itself:

<Window x:Class="WpfApplication2.Window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="Window1" Height="300" Width="300" DataContext="{Binding RelativeSource={RelativeSource Self}}" ... /> 
Sign up to request clarification or add additional context in comments.

Comments

0

I believe the DataContext in this scenario is implicit and does not have to be set since you are using the code behind. If you were using MVVM you would add a reference to that folder and class inside of you XAML markup and set the resource key equal to a value that can then be declared as the DataContext inside of a child elements DataContext property. But in your case (since you are not using MVVM) you shouldn't have to do that.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.