我有四个用户控件,我尝试将值从用户控件传递到另一个用户控件,这些用户控件存在于同一个用户控件中。 这个 xml 主页面
` <Grid>
<StackPanel Background="#FFF">
<local:mwidget x:Name="mwidget" Loaded="UserControl1_Loaded"/>
<local:addemploy x:Name="addemploy" Visibility="Hidden"/>
<local:editemploy x:Name="editemploy" Visibility="Hidden" />
</StackPanel>
</Grid>`
还有这个代码
` private void UserControl1_Loaded(object sender, RoutedEventArgs e)
{
mwidget.ShowUserControl2Requested += OnShowUserControl2Requested;
addemploy.ShowUserControl1Requested += OnShowUserControl1Requested;
editemploy.ShowUserControl1Requestedd += ShowUserControl1Requestedd;
mwidget.ShowUserControl2Requestedd += ShowUserControl1Requesteddd;
}
private void OnShowUserControl2Requested(object sender, EventArgs e)
{
addemploy.Visibility = Visibility.Visible;
mwidget.Visibility = Visibility.Collapsed;
}
private void OnShowUserControl1Requested(object sender, EventArgs e)
{
mwidget.Visibility = Visibility.Visible;
addemploy.Visibility = Visibility.Collapsed;
}
private void ShowUserControl1Requestedd(object sender, EventArgs e)
{
mwidget.Visibility = Visibility.Visible;
editemploy.Visibility = Visibility.Collapsed;
}
private void ShowUserControl1Requesteddd(object sender, EventArgs e)
{
editemploy.Visibility = Visibility.Visible;
mwidget.Visibility = Visibility.Collapsed;
}`
这个代码mwidget
` public partial class mwidget : UserControl
{
public event EventHandler ShowUserControl2Requested;
public event EventHandler ShowUserControl2Requestedd;
public mwidget()
{
InitializeComponent();
}
private void add_employ(object sender, RoutedEventArgs e)
{
ShowUserControl2Requested?.Invoke(this, EventArgs.Empty);
}
private void edit_employ(object sender, System.Windows.RoutedEventArgs e)
{
ShowUserControl2Requestedd?.Invoke(this, EventArgs.Empty);
}
}`
所以我想将值从 mwidget 传递到 editemploy,我尝试了一些解决方案,但不起作用
您需要在 mwidget 和 editemploy 中创建 DependencyPropertys 并将它们相互绑定。 (注意:在下面的示例中,我使用了 OneWayToSource。这可以防止 editemploy 更改 mwidget 中的值。如果您不想这样做,请将其更改为 TwoWay。)
m小部件:
public static readonly DependencyProperty MyValueProperty =
DependencyProperty.Register(
nameof(MyValue),
typeof(bool),
typeof(mwidget));
public bool MyValue
{
get => (bool)GetValue(MyValueProperty);
set => SetValue(MyValueProperty, value);
}
编辑雇佣:
public static readonly DependencyProperty MyPassedValueProperty =
DependencyProperty.Register(
nameof(MyPassedValue),
typeof(bool),
typeof(editemploy));
public bool MyPassedValue
{
get => (bool)GetValue(MyPassedValueProperty);
set => SetValue(MyPassedValueProperty, value);
}
xaml:
<local:mwidget x:Name="mwidget" Loaded="UserControl1_Loaded"/>
<local:addemploy x:Name="addemploy" Visibility="Hidden"/>
<local:editemploy x:Name="editemploy"
Visibility="Hidden"
MyPassedValue="{Binding ElementName=mwidget, Path=MyValue, Mode=OneWayToSource}" />