C# expose Togglebutton ischecked属性

C# expose Togglebutton ischecked属性,c#,wpf,C#,Wpf,我有2个用户控件,UC1和UC2: UC1:有3个切换按钮,按钮1,按钮2,按钮3 UC2:具有包含UI元素的画布。等等:ellipse1 当Button1.ischecked==true时,我想隐藏省略号1 我暴露了togglebutton的选中状态,但我一直读取false UC1: UC2: 请告诉我哪里出了问题您需要为您的切换按钮公开选中的和未选中的事件,并从UC2订阅它们。在那里,eventhandler可以隐藏/显示椭圆 注意:您可以将ToggleButton中的两个事件聚合为一个To

我有2个用户控件,UC1和UC2: UC1:有3个切换按钮,按钮1,按钮2,按钮3 UC2:具有包含UI元素的画布。等等:ellipse1

当Button1.ischecked==true时,我想隐藏省略号1

我暴露了togglebutton的选中状态,但我一直读取false

UC1:

UC2:


请告诉我哪里出了问题

您需要为您的
切换按钮
公开
选中的
未选中的
事件,并从UC2订阅它们。在那里,eventhandler可以隐藏/显示椭圆

注意:您可以将
ToggleButton
中的两个事件聚合为一个
ToggleStateChanged
事件,该事件由UC2处理

    public event Action<bool> ToggleStateChanged;

    public ButtonLayout()
    {
        InitializeComponent();
        ToggleButton1.Checked += (sender, e) => ToggleStateChanged?.Invoke(true);
        ToggleButton1.UnChecked += (sender, e) => ToggleStateChanged?.Invoke(false);
    }


您需要为您的
切换按钮
公开
选中的
未选中的
事件,并从UC2订阅它们。在那里,eventhandler可以隐藏/显示椭圆

注意:您可以将
ToggleButton
中的两个事件聚合为一个
ToggleStateChanged
事件,该事件由UC2处理

    public event Action<bool> ToggleStateChanged;

    public ButtonLayout()
    {
        InitializeComponent();
        ToggleButton1.Checked += (sender, e) => ToggleStateChanged?.Invoke(true);
        ToggleButton1.UnChecked += (sender, e) => ToggleStateChanged?.Invoke(false);
    }


实际上,您的示例将为false,因为IsChecked的默认值为false,并且由于您似乎在构建ButtonLayout类之后立即读取了该值,因此没有时间将其作为其他值。我认为您的代码要比这复杂得多,因此您可能应该编辑问题以更好地反映您的问题。因为IsChecked的默认值为false,所以您的示例将为false,并且由于您似乎在构建ButtonLayout类后立即读取了该值,因此没有时间进行其他操作。我认为你的代码比这更复杂,所以也许你应该编辑这个问题来更好地反映你的问题。嗨,约翰!谢谢你的回复。你能详细说明你的答案吗。我需要建立依赖关系吗?PS:如果你真的想在WPF中开发严肃的应用程序,以后你可能会想研究MVVM架构模式……嗨,Johan!谢谢你的回复。你能详细说明你的答案吗。我需要建立依赖关系吗?PS:如果你真的想在WPF中开发严肃的应用程序,以后你可能想研究一下MVVM架构模式。。。
    public event Action<bool> ToggleStateChanged;

    public ButtonLayout()
    {
        InitializeComponent();
        ToggleButton1.Checked += (sender, e) => ToggleStateChanged?.Invoke(true);
        ToggleButton1.UnChecked += (sender, e) => ToggleStateChanged?.Invoke(false);
    }
    ButtonLayout buttons = new ButtonLayout();
    buttons.ToggleStateChanged += SetVisibility;
    private void SetVisibility(bool isChecked)
    {
         elip1.Visibility = isChecked? Visibility.Hidden : Visibility.Visisble;
    }