Set DataContext in XAML
I have this simple application that adds some items to a combobox:
开发者_如何学JAVApublic 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.
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}}" ... />
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.
精彩评论