我正在学习WPF中的绑定。当1)一个控件的文本直接转到另一个控件的文本字段时,我可以得到绑定工作; 2)当我在代码隐藏文件中手动配置绑定时。
在第一个场景中,我使用纯XAML来配置绑定。是否可以在代码隐藏文件中从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”的实例?
答案 0 :(得分:4)
我相信您必须在窗口的Window_Loaded事件中执行Person p = (Person)FindResource("MyPerson");
。我认为您不能为ResourceDictionary
中的项目指定名称。
答案 1 :(得分:4)
那么,在这种情况下它很容易,因为它被定义为资源:
object MyPerson = FindResource("MyPerson");
在一般情况下,它有点复杂......假设您有一个名为TextBox
的{{1}},并且其textBox1
属性绑定到Text
属性另一个对象,你可以这样做:
Name