gpt4 book ai didi

c# - 纯在 XAML 中定义绑定(bind)时,源变量是否可以在后面的代码中访问?

转载 作者:行者123 更新时间:2023-11-30 19:51:18 25 4
gpt4 key购买 nike

我正在学习 WPF 中的绑定(bind)。当 1) 一个控件的文本直接进入另一个控件的文本字段和 2) 当我在代码隐藏文件中手动配置绑定(bind)时,我可以开始绑定(bind)工作。

在第一个场景中,我使用纯 XAML 来配置绑定(bind)。是否可以从代码隐藏文件中的 XAML 访问源变量?

<Window x:Class="DataBindingExperiments.MainWindow"
...
xmlns:local="clr-namespace:DataBindingExperiments.DataSources">
<Window.Resources>
<local:Person x:Key="MyPerson" />
</Window.Resources>
<Grid>
<StackPanel Orientation="Vertical">
<GroupBox Header="XAML Binding" Width="Auto" Height="110" Margin="5,5,5,5">
<Grid>
...
<Grid.DataContext>
<Binding Source="{StaticResource MyPerson}" />
</Grid.DataContext>
<TextBox Grid.Row="0" Grid.Column="1" Name="textBox_firstName" Text="{Binding Path=FirstName, UpdateSourceTrigger=PropertyChanged}" />
<TextBox Grid.Row="1" Grid.Column="1" Name="textBox_lastName" Text="{Binding Path=LastName, UpdateSourceTrigger=PropertyChanged}"/>
<TextBlock Grid.Row="2" Grid.Column="1" Name="textBox_fullName" Text="{Binding Source={StaticResource MyPerson}, Path=FullName}" />
</Grid>
...
...

在上面的代码中,如何在代码隐藏中访问“MyPerson”的实例?

最佳答案

好吧,在那种情况下很容易,因为它被定义为资源:

object MyPerson = FindResource("MyPerson");

在一般情况下,它有点复杂...假设您有一个名为 textBox1TextBox,它的 Text 属性是绑定(bind)到另一个对象的 Name 属性,你可以这样做:

BindingExpression expr = BindingOperations.GetBindingExpression(textBox1, TextBox.TextProperty);
object source = expr.DataItem;

关于c# - 纯在 XAML 中定义绑定(bind)时,源变量是否可以在后面的代码中访问?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1289696/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com