将值从用户控件传递到同一用户控件wpf c#中的另一个?

问题描述 投票:0回答:1

我有四个用户控件,我尝试将值从用户控件传递到另一个用户控件,这些用户控件存在于同一个用户控件中。 这个 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,我尝试了一些解决方案,但不起作用

c# wpf
1个回答
0
投票

您需要在 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}" />
© www.soinside.com 2019 - 2024. All rights reserved.