在XAML中设置DataContext
本文关键字:DataContext 设置 XAML | 更新日期: 2023-09-27 18:06:34
我有一个简单的应用程序,为组合框添加一些项目:
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");
}
}
这里是XAML文件:
<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>
有人能告诉我如何从xaml文件中设置DataContext而不是在构造函数中初始化吗?
谢谢。
只需将Window
更改为将 DataContext
绑定到自身:
<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}}" ... />
我认为这个场景中的DataContext是隐式的,不需要设置,因为您正在使用后面的代码。如果您正在使用MVVM,您将在XAML标记中添加对该文件夹和类的引用,并将资源键设置为一个值,然后可以在子元素DataContext属性中声明为DataContext。但在您的情况下(因为您没有使用MVVM),您不应该这样做。