Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WPF中使用代码隐藏的数据绑定_C#_Wpf_Vb.net_Xaml - Fatal编程技术网

C# WPF中使用代码隐藏的数据绑定

C# WPF中使用代码隐藏的数据绑定,c#,wpf,vb.net,xaml,C#,Wpf,Vb.net,Xaml,我有一个场景,当字符串属性更改时,我想将字符串属性绑定到UI上的文本框。我想在代码隐藏中更改属性。请在下面找到我的工作: XAML : <Window x:Class="databinding.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmln

我有一个场景,当字符串属性更改时,我想将字符串属性绑定到UI上的文本框。我想在代码隐藏中更改属性。请在下面找到我的工作:

XAML :

<Window x:Class="databinding.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:test="clr-namespace:databinding"
    Title="MainWindow" Height="350" Width="525">
<Grid>
   <TextBox Text="{Binding mobile1}"  Height="23" HorizontalAlignment="Left" Margin="10,10,0,0" Name="textBox1" VerticalAlignment="Top" Width="120" />
    <TextBox Text="{Binding mobile2}" Height="23" HorizontalAlignment="Left" Margin="10,43,0,0" Name="textBox2" VerticalAlignment="Top" Width="120" />
    <Button Content="Button" Height="23" HorizontalAlignment="Left" Margin="10,76,0,0" Name="button1" VerticalAlignment="Top" Width="75" Click="button1_Click" />
</Grid>
请查找我定义属性的类:

mobile.cs:

namespace databinding
{
   public class mobile:INotifyPropertyChanged
    {
       string mobile1model;
       string mobile2model;


       public string mobile1 { get { return mobile1model; } set { mobile1model = value; OnPropertyChanged(new PropertyChangedEventArgs("mobile1")); } }
       public string mobile2 { get { return mobile2model; } set { mobile2model = value; OnPropertyChanged(new PropertyChangedEventArgs("mobile2")); } }

       public event PropertyChangedEventHandler PropertyChanged;

       public void OnPropertyChanged(PropertyChangedEventArgs e)
       {
           if (PropertyChanged != null)
           {
               PropertyChanged(this, e);
           }
       }
    }
}
现在我有了一个测试类,我在其中更改了属性值:

test.cs:

namespace databinding
{
   public class talk:MainWindow
    {

       public void test()
       {
         mobile mb = new mobile();
         mb.mobile1 = "This is mobile 1";
         mb.mobile2 = "This is mobile 2";

       }
    }
}
这里的问题陈述是,当我单击按钮1时,属性得到更新,但UI上的文本框没有得到更新,我还要检查文本框是在属性更改后立即更新,还是要等到第二个属性更改后才能更新?感谢您对此查询的支持


提前谢谢

创建一个
mobile
类的实例,将其设置为
Window.DataContext
并在该实例上调用
test()

public partial class MainWindow : Window
{
    private readonly mobile _mb = new mobile();

    public MainWindow()
    {
        InitializeComponent();
        DataContext = _mb;
    }

    public void test()
    {
        _mb.mobile1 = "This is mobile 1";
        _mb.mobile2 = "This is mobile 2";
    }

    void button1_Click(object sender, RoutedEventArgs e)
    {            
        this.test();
    }
}

创建一个
mobile
类的实例,将其设置为
Window.DataContext
并在该实例上调用
test()

public partial class MainWindow : Window
{
    private readonly mobile _mb = new mobile();

    public MainWindow()
    {
        InitializeComponent();
        DataContext = _mb;
    }

    public void test()
    {
        _mb.mobile1 = "This is mobile 1";
        _mb.mobile2 = "This is mobile 2";
    }

    void button1_Click(object sender, RoutedEventArgs e)
    {            
        this.test();
    }
}

创建一个
mobile
类的实例,将其设置为
Window.DataContext
并在该实例上调用
test()

public partial class MainWindow : Window
{
    private readonly mobile _mb = new mobile();

    public MainWindow()
    {
        InitializeComponent();
        DataContext = _mb;
    }

    public void test()
    {
        _mb.mobile1 = "This is mobile 1";
        _mb.mobile2 = "This is mobile 2";
    }

    void button1_Click(object sender, RoutedEventArgs e)
    {            
        this.test();
    }
}

创建一个
mobile
类的实例,将其设置为
Window.DataContext
并在该实例上调用
test()

public partial class MainWindow : Window
{
    private readonly mobile _mb = new mobile();

    public MainWindow()
    {
        InitializeComponent();
        DataContext = _mb;
    }

    public void test()
    {
        _mb.mobile1 = "This is mobile 1";
        _mb.mobile2 = "This is mobile 2";
    }

    void button1_Click(object sender, RoutedEventArgs e)
    {            
        this.test();
    }
}


只需使用MVVM,忘记代码隐藏。单击按钮将创建一个新实例并设置值。该对象仅存在于您的事件处理程序中,因此如果您愿意,无法绑定。您能否建议一个示例,或者在哪里可以获得实现mvvm的适当示例,因为我是wpf新手?不太可能。但是谷歌wpf MVVM教程和你会发现几十万!只需使用MVVM,忘记代码隐藏。单击按钮将创建一个新实例并设置值。该对象仅存在于您的事件处理程序中,因此如果您愿意,无法绑定。您能否建议一个示例,或者在哪里可以获得实现mvvm的适当示例,因为我是wpf新手?不太可能。但是谷歌wpf MVVM教程和你会发现几十万!只需使用MVVM,忘记代码隐藏。单击按钮将创建一个新实例并设置值。该对象仅存在于您的事件处理程序中,因此如果您愿意,无法绑定。您能否建议一个示例,或者在哪里可以获得实现mvvm的适当示例,因为我是wpf新手?不太可能。但是谷歌wpf MVVM教程和你会发现几十万!只需使用MVVM,忘记代码隐藏。单击按钮将创建一个新实例并设置值。该对象仅存在于您的事件处理程序中,因此如果您愿意,无法绑定。您能否建议一个示例,或者在哪里可以获得实现mvvm的适当示例,因为我是wpf新手?不太可能。但是谷歌wpf MVVM教程和你会发现几十万!当我试图构建它时,它抛出了一个异常,请参见下面的:private readonly talk _ta=new talk();->在databinding.exe
talk
中发生了类型为“System.StackOverflowException”的未处理异常,它是一个窗口,不能无休止地创建自己,因为最终将导致StackOverflowException
mobile
是您的视图模型类,因此它应该是
private readonly mobile\u mb=new mobile()
(刷新页面)但是textbox1和textbox2会立即更新,我们能做些什么吗?当第一个属性更改时,ui需要更新,就像windows窗体一样?当处理
PropertyChanged
事件时,ui会更新,当ui从视图模型中提取新值时。更改属性值时,它不会更新。您不直接更改UI属性,而是绑定视图模型属性,该属性仅通知UI刷新其值。您可以建议可以执行哪些操作以实现我想要的吗?因为这是我的首要要求。衷心感谢您的支持。当我尝试构建它时,它会抛出一个异常,请参见以下:private readonly talk _ta=new talk();->在databinding.exe
talk
中发生了类型为“System.StackOverflowException”的未处理异常,它是一个窗口,不能无休止地创建自己,因为最终将导致StackOverflowException
mobile
是您的视图模型类,因此它应该是
private readonly mobile\u mb=new mobile()
(刷新页面)但是textbox1和textbox2会立即更新,我们能做些什么吗?当第一个属性更改时,ui需要更新,就像windows窗体一样?当处理
PropertyChanged
事件时,ui会更新,当ui从视图模型中提取新值时。更改属性值时,它不会更新。您不直接更改UI属性,而是绑定视图模型属性,该属性仅通知UI刷新其值。您可以建议可以执行哪些操作以实现我想要的吗?因为这是我的首要要求。衷心感谢您的支持。当我尝试构建它时,它会抛出一个异常,请参见以下:private readonly talk _ta=new talk();->在databinding.exe
talk
中发生了类型为“System.StackOverflowException”的未处理异常,它是一个窗口,不能无休止地创建自己,因为最终将导致StackOverflowException
mobile
是您的视图模型类,因此它应该是
private readonly mobile\u mb=new mobile()
(刷新页面)但是textbox1和textbox2会立即更新,我们能做些什么吗?当第一个属性更改时,ui需要更新,就像windows窗体一样?当处理
PropertyChanged
事件时,ui会更新,当ui从视图模型中提取新值时。更改属性值时,它不会更新。您不直接更改UI属性,而是绑定视图模型属性,该属性仅通知UI刷新其值。您可以建议可以执行哪些操作以实现我想要的吗?因为这是我的首要要求。衷心感谢您的支持。当我尝试构建它时,它会抛出一个异常,请参阅