Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/259.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# UWP简单数据绑定不工作_C#_Data Binding_Uwp - Fatal编程技术网

C# UWP简单数据绑定不工作

C# UWP简单数据绑定不工作,c#,data-binding,uwp,C#,Data Binding,Uwp,我一直在关注一些培训视频,并使用UWP和C#创建了一个简单的应用程序,并使用UWP数据绑定,不幸的是,将数据从文本框传递到类属性根本不起作用。什么也没发生。未传递任何数据,也未生成任何错误 因此,我的类(所有剥离到相关代码)是 第页下面是 <Page.DataContext> <local:ChangeCalc /> </Page.DataContext> 数据绑定何时启动?遗漏了什么事件(如有) 谢谢你的帮助 没有任何东西通过。但是,当click

我一直在关注一些培训视频,并使用UWP和C#创建了一个简单的应用程序,并使用UWP数据绑定,不幸的是,将数据从文本框传递到类属性根本不起作用。什么也没发生。未传递任何数据,也未生成任何错误

因此,我的类(所有剥离到相关代码)是

第页下面是

 <Page.DataContext>
    <local:ChangeCalc />
</Page.DataContext>
数据绑定何时启动?遗漏了什么事件(如有)

谢谢你的帮助


没有任何东西通过。但是,当click事件指向相同的属性时,它会传递OK

这是因为当您使用数据绑定时,您只需将一个数据模型设置为
DataContext
,在该模型中可以找到
TextBox
的属性,实际上并没有将任何真实数据传递给
TextBox
。当您使用button click事件时,您将创建此数据模型的实例“myChangeCalc”,并将实际数据(如“txtpayed.Text”)传递给此实例的属性“Amountpaid”

silverfighter,您不必实现INotifyPropertyChanged(我知道什么我不能让它工作)说明说:对TextBox的更改。文本在TextBox失去焦点时发送到双向绑定源,而不是在每次用户击键后

是的,但此更改是从绑定目标到绑定源的,如果您想在此处从绑定源更改为绑定目标,则必须在源对象上实现
INotifyPropertyChanged
接口,以便源可以通过绑定引擎侦听的事件报告更改

因此,作为一个例子:

<Page.Resources>
    <local:ChangeCals x:Name="ccData" Amountpaid="111" />
</Page.Resources>

<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}" DataContext="{StaticResource ccData}">
    <TextBox
        x:FieldModifier="public"
        Text="{Binding Amountpaid, Mode=TwoWay}"
        TextWrapping="Wrap"  Height="50" />
</Grid>
代码隐藏:

public MainPage()
{
    this.InitializeComponent();
    this.DataContext = myChangeCalc;
}

public ChangeCals myChangeCalc = new ChangeCals { Amountpaid = "111", GoodsCost = "222" };

无论如何,绑定源应该是数据模型(ChangeCals类)的一个实例。因为您在这里使用了{Binding},所以我没有展示使用{x:Bind}的示例,如果您想了解有关{x:Bind}的更多信息,可以参考。有关绑定和x:Bind的更多信息,请参阅

您如何知道数据绑定不起作用?您是否实现了INotifyPropertyChanged?您的问题很可能与许多已存在的堆栈溢出重复,这些溢出归结为“我未能实现属性更改通知”。但是如果没有一个好的答案,就不可能确定问题出在哪里。如果您需要帮助,请改进问题。没有传递任何信息。然而,当点击事件指向相同的属性时,它传递OK.Peter,根据我所读到的,这就是我所需要做的。我在属性中使用数据绑定,每个步骤(只有大约4个步骤)在xaml中产生相同的更改。
  myChangeCalc.GoodsCost = txtCost.Text;
  myChangeCalc.Amountpaid = txtPaid.Text;
<Page.Resources>
    <local:ChangeCals x:Name="ccData" Amountpaid="111" />
</Page.Resources>

<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}" DataContext="{StaticResource ccData}">
    <TextBox
        x:FieldModifier="public"
        Text="{Binding Amountpaid, Mode=TwoWay}"
        TextWrapping="Wrap"  Height="50" />
</Grid>
<TextBox
    x:FieldModifier="public"
    Text="{Binding Amountpaid, Mode=TwoWay}"
    TextWrapping="Wrap"  />
public MainPage()
{
    this.InitializeComponent();
    this.DataContext = myChangeCalc;
}

public ChangeCals myChangeCalc = new ChangeCals { Amountpaid = "111", GoodsCost = "222" };