C# 我做错了什么使数据绑定目标不';不受数据绑定源的影响
我最近从Windows窗体转移到WPF。我从“的系列”开始。在上,以下代码应使用数据填充文本框:C# 我做错了什么使数据绑定目标不';不受数据绑定源的影响,c#,.net,wpf,xaml,data-binding,C#,.net,Wpf,Xaml,Data Binding,我最近从Windows窗体转移到WPF。我从“的系列”开始。在上,以下代码应使用数据填充文本框: <TextBox Grid.Row="0" Grid.Column="1" Text="{Binding Path=Feed.Title, Mode=OneWay}" /> <TextBox Grid.Row="1" Grid.Column="1" Text="{Binding Path=Feed.Link.AbsoluteUri, Mode=OneWay}" /> <
<TextBox Grid.Row="0" Grid.Column="1" Text="{Binding Path=Feed.Title, Mode=OneWay}" />
<TextBox Grid.Row="1" Grid.Column="1" Text="{Binding Path=Feed.Link.AbsoluteUri, Mode=OneWay}" />
<TextBox Grid.Row="2" Grid.Column="1" Text="{Binding Path=Feed.Description, Mode=OneWay}"/>
TextBlock
文本的预期值为“TextBox1”
(TextBox1.text
),但TextBlock
文本实际上为空
因此,我检查了一下,并决定将绑定模式更改为双向,但得到了相同的结果
最后,我发现这显示了如何做到这一点。根据他系列文章的这一部分所说:
更少的代码意味着更少的维护、更少的测试和更少的担忧
根据MSDN上的来源:
<Label>Enter a Name:</Label>
<TextBox>
<TextBox.Text>
<Binding Source="{StaticResource myDataSource}" Path="Name"
UpdateSourceTrigger="PropertyChanged"/>
</TextBox.Text>
</TextBox>
<Label>The name you entered:</Label>
<TextBlock Text="{Binding Source={StaticResource myDataSource}, Path=Name}"/>
输入一个名称:
您输入的名称:
我将键入(大致)相同数量的代码。这样的任务(通过文本框更改来更改文本块)可以使用普通事件处理程序来完成。因此,我的问题是:
提前感谢。您的第一次尝试不正确,因为
绑定
路径与文本块的数据上下文
相关。您正在尝试绑定到特定元素,因此可以使用ElementName
指定源,然后路径与此相关:
Text="{Binding ElementName=TextBox1, Path=Text}"
WPF的惯用方法是使用MVVM。在这种情况下,TextBox
和TextBlock
都将绑定到视图模型上的属性
更改文本框
中的文本将更新此属性,该属性将更新文本块
。您的视图模型没有WPF视图问题,可以在不涉及WPF的情况下进行单元测试
Text="{Binding ElementName=TextBox1, Path=Text}"