C#WPF绑定不从属性获取数据

玄Mi

在我的XAML中,我正在执行以下操作

<Label Content="{Binding ElementName=Root, Path=UserData.Email, Mode=OneWay}" />

Root元素是我Window自己和UserData是一个get; private set;在我隐藏文件自动财产,该Email财产是获得仅是类型string

UserData用户登录后将设置对象。但是绑定没有从该对象获取值。我已验证该对象确实包含正确的数据,但不是null我在这里想念什么?

费利克斯·卡斯特

我继续为此创建了一个hello世界版本。这是xml。单击按钮将其更改为文本框中的文本时,只需更改横幅。我找不到一个超级简单的例子,所以我举了一个例子。显然,有一些更高级的方法可以做到这一点,但是它应该可以作为一个简单的版本。

<Window x:Class="Hello_World.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>
        <Label Name="MyLabel" Content="{Binding MyLabel}" HorizontalAlignment="Left" Margin="58,37,0,0" VerticalAlignment="Top" Height="65" Width="423" FontSize="44"/>
        <TextBox Name="MyTextBox" HorizontalAlignment="Left" Height="28" Margin="163,162,0,0" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Width="163"/>
        <Button Content="Change Banner" HorizontalAlignment="Left" Margin="251,209,0,0" VerticalAlignment="Top" Width="109" Click="Button_Click"/>

    </Grid>
</Window>

接下来是实现INotifyPropertyChanged接口的ModelView 请注意,您的属性必须是具有getter,setter和backing字段的公共属性。这样,OnPropetyChanged()只要设置了属性,就可以调用该方法。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Hello_World
{
    public class MainViewModel: INotifyPropertyChanged
    {


        private string _myLabel;

        public string MyLabel
        {
            get { return _myLabel; }
            set
            {
                _myLabel = value;
                OnPropertyChanged(nameof(MyLabel));
            }
        }    

        public event PropertyChangedEventHandler PropertyChanged;

        private void OnPropertyChanged(string propetyName)
        {
            if(PropertyChanged != null)
            PropertyChanged(this,new PropertyChangedEventArgs(propetyName));

        }

    }
}

最后是MainWindow。设置DataContext在主构造函数。请注意,我可以设置DataContext主网格的,所有子网格都将继承相同的网格DataContext这将使您不必单独设置所有组件。

namespace Hello_World
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        private MainViewModel MyViewModel;


        public MainWindow()
        {
            InitializeComponent();
            MyViewModel = new MainViewModel();

            // Here's where I'm setting the object to look at.
            DataContext = MyViewModel;

            // Now I don't need to access the textbox directly.
            MyViewModel.MyLabel = "Hello World";    
        }

        private void Button_Click(object sender, RoutedEventArgs e)
        {
            // Note: ICommand is a more advanced topic.
            MyViewModel.MyLabel = MyTextBox.Text;
        }
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

C#WPF绑定不从属性获取数据

来自分类Dev

数据绑定到属性C#wpf

来自分类Dev

将数据从属性绑定到文本块-MVVM Light和WPF

来自分类Dev

为什么MapHttpAttributeRoutes()不从属性添加路由?

来自分类Dev

从属性值获取属性

来自分类Dev

如何从属性中获取价值

来自分类Dev

AngularJS指令:从属性获取对象

来自分类Dev

C#WPF DataGrid数据绑定错误

来自分类Dev

从属性列表中检索数据

来自分类Dev

angularjs-从属性(不是解析值)获取绑定表达式

来自分类Dev

angularjs-从属性(不是解析值)获取绑定表达式

来自分类Dev

从属性名称获取OrmLite数据库列名称

来自分类Dev

从属性继承

来自分类Dev

Vue:从属性

来自分类Dev

从属性名称中检索“属性获取器”

来自分类Dev

从属性值中获取属性键

来自分类Dev

Guice-JPApersistance.xml不从属性文件读取占位符

来自分类Dev

通过CSJS从属性文件中的条目获取值

来自分类Dev

如何从属性获取类型以执行方法?

来自分类Dev

Spring MessageSource无法从属性文件获取消息

来自分类Dev

erlang:从属性列表中获取键集的值

来自分类Dev

EnvDTE并从属性获取常量值

来自分类Dev

从属性组合获取所有文档

来自分类Dev

如何使用 Java 从属性 xml 中获取值?

来自分类Dev

如何从属性中获取枚举值

来自分类Dev

如何从属性获取 LDAP 嵌套组

来自分类Dev

从属性文件中获取 fmt:formatDate 的模式

来自分类Dev

从属性访问属性

来自分类Dev

C#WPF中的数据绑定组合框