我有usercontrol让我们说UA带有一个文本框。现在我想访问另一个usercontrol的代码隐藏中的文本框中的值,让UB说 用户控件都位于选项卡上。有效的方法是什么?
答案 0 :(得分:0)
为UserControls提供另一个可以绑定的依赖项属性或
一些xaml:
<local:Uc1 x:Name="uc1" DataContext="{Binding ElementName=uc2, Path=Thing}" />
<local:Uc2 x:Name="uc2" />
这也可以在代码中完成。
或将两个UserControl绑定到同一个ViewModel。
更新了答案
在MainWindow.cs中定义自定义依赖项属性
public string Prop
{
get { return (string)GetValue(PropProperty); }
set { SetValue(PropProperty, value); }
}
// Using a DependencyProperty as the backing store for Prop. This enables animation, styling, binding, etc...
public static readonly DependencyProperty PropProperty =
DependencyProperty.Register("Prop", typeof(string), typeof(MainWindow), new PropertyMetadata("Hello!!"));
现在只需将此dp绑定到您的两个用户控件即可 UserControl 1
public string Prop
{
get { return (string)GetValue(PropProperty); }
set { SetValue(PropProperty, value); }
}
// Using a DependencyProperty as the backing store for Prop. This enables animation, styling, binding, etc...
public static readonly DependencyProperty PropProperty =
DependencyProperty.Register("Prop", typeof(string), typeof(MainWindow), new PropertyMetadata("Hello!!"));
UserControl 2
<Grid>
<TextBox Height="25" Text="{Binding RelativeSource={RelativeSource AncestorType=Window},Path=Prop,
Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Width="65"/>
</Grid>
这只是一个使用自定义dp的例子。