WPF XAML 中参数化构造函数赋值 DataContext

引入命名空间:

xmlns:system="clr-namespace:System;assembly=mscorlib"

XAML:

<Window x:Class="WpfApp.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:system="clr-namespace:System;assembly=mscorlib"
        xmlns:local="clr-namespace:WpfApp"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="600">

    <Window.DataContext>
        <ObjectDataProvider ObjectType="local:Welcom">
            <ObjectDataProvider.ConstructorParameters>
                <system:String>孙悟空</system:String>
                <system:Int32>100</system:Int32>
            </ObjectDataProvider.ConstructorParameters>
        </ObjectDataProvider>
    </Window.DataContext>

    <Grid>
        <TextBox Height="20" Width="200" BorderBrush="Black" Text="{Binding Name}"/>
    </Grid>
</Window>

CS:

public class Welcom : ObservableObject
{
    private string _name = "Hello World!!!";

    public string Name
    {
        get => _name;
        set { _name = value; RaisePropertyChanged(nameof(Name)); }
    }

    public Welcom(string name, int score)
    {
        _name = name + " " + score.ToString() + " 分";
    }
}

视图:




<Window.DataContext>
    <ObjectDataProvider ObjectType="local:MainVM">
        <ObjectDataProvider.ConstructorParameters>
            <sys:String>Good</sys:String>
        </ObjectDataProvider.ConstructorParameters>
    </ObjectDataProvider>
</Window.DataContext>

Code behind 转化 DateContext:

ObjectDataProvider odp = DataContext as ObjectDataProvider;
m_MainVM = odp.ObjectInstance as MainVM;

如何在 XAML 代码中传入 this 对象参数,现在还不知道;还是在 behind code 里面处理吧。

How do you pass "this" to the constructor for ObjectDataProvider in XAML?

posted @   double64  阅读(765)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示