Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.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# 我做错了什么使数据绑定目标不';不受数据绑定源的影响_C#_.net_Wpf_Xaml_Data Binding - Fatal编程技术网

C# 我做错了什么使数据绑定目标不';不受数据绑定源的影响

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}" /> <

我最近从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="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}"/>
输入一个名称:
您输入的名称:
我将键入(大致)相同数量的代码。这样的任务(通过文本框更改来更改文本块)可以使用普通事件处理程序来完成。因此,我的问题是:

  • 如果同样的任务可以用大致相同数量的代码完成,那么WPF数据绑定有什么特别之处
  • 我的第一个代码出了什么问题
  • 在上面的MSDN代码中,他们必须为源代码和目标代码键入XAML代码。如果我希望源代码是类中的一个值,那么有可能完成这样的任务吗?怎么做
  • 任何帮助都将不胜感激,
    提前感谢。

    您的第一次尝试不正确,因为
    绑定
    路径与
    文本块的
    数据上下文
    相关。您正在尝试绑定到特定元素,因此可以使用
    ElementName
    指定源,然后路径与此相关:

    Text="{Binding ElementName=TextBox1, Path=Text}"
    
    WPF的惯用方法是使用MVVM。在这种情况下,
    TextBox
    TextBlock
    都将绑定到视图模型上的属性

    更改
    文本框
    中的文本将更新此属性,该属性将更新
    文本块
    。您的视图模型没有WPF视图问题,可以在不涉及WPF的情况下进行单元测试

    Text="{Binding ElementName=TextBox1, Path=Text}"