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