c# - 如何将 DataContext 定义从代码隐藏移动到 XAML?

标签 c# wpf xaml datacontext

我在代码隐藏中定义了一个包含属性的对象,并希望将该对象设置为 xaml 中的数据上下文。

namespace WpfApplication4
{

    public partial class MainWindow : Window
    {
        public EquipInfo equip1;

        public MainWindow()
        {
            InitializeComponent();

            equip1 = new EquipInfo();
            //  setting here works fine but i want to do in xaml
            //textBox1.DataContext = equip1; 
        }
    }
}

这是 xaml 代码..

<Window x:Class="WpfApplication4.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <TextBox Text="{Binding Path=PIN}" Height="23" 
                 HorizontalAlignment="Left" Margin="172,208,0,0" 
                 Name="textBox1" VerticalAlignment="Top" Width="120" />
    </Grid>
</Window>

最佳答案

您可以通过 XAML 将 DataContext 设置为公共(public)属性。 blindmeis 给出了一个很好的例子来说明如何做到这一点。

您在帖子中所做的不是设置 DataContext,而是将控件的文本属性绑定(bind)到窗口的属性。这仅在设置了 DataContext 时有效。另一种方法是,如果您不想执行 MVVM(尽管我建议这样做),请在您的绑定(bind)中引用特定元素:

1.) 将成员更改为 AutoProperty 或类似的

public EquipInfo equip1 {get;set;}

2.) 给你的窗口起个名字

<Window x:Class="WpfApplication4.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    x:Name="myWin"
    Title="MainWindow" Height="350" Width="525">

2.) 通过实例名称访问窗口属性

<TextBox Text="{Binding ElementName=myWin, Path=equip1.PIN}"/>

附带说明一下,使用 MVVM真的更好。相反。

关于c# - 如何将 DataContext 定义从代码隐藏移动到 XAML?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10510673/

相关文章:

xaml - Windows Phone 8.1 通用应用程序中的字段验证

c#比较对象而不创建dto

c# - 如何获取gridview的数据源

c# - 将应用程序资源中的 DependancyProperty 绑定(bind)到控件 DependancyProperty(正在使用该资源)

c# - 在由多个 View 模型绑定(bind)的 View 中绑定(bind)图像不起作用

c# - 在 WPF XAML 中禁用样式?

c# - CacheItem regionName 属性责任/用途?

c# - 强制 XmlDocument 保存带有显式结束标记的空元素

c# - 使 WPF TextBox 绑定(bind)触发每个新角色?

wpf - 将 UserControl 的 datacontext 设置为在父 View 模型中定义的 ViewModel