如果选择了任何一个单选按钮项目中的任何一个列表框项目,我将如何启用NEXT按钮?

时间:2015-04-03 06:14:44

标签: c# wpf

我有一个使用C#编程的WPF表单。我使用的是.Net 4.0。在表单中,我有两个radiobuttons和一个包含4个项目的列表框和一个名为" NEXT"

我希望只有当选择了任何一个单选按钮项和任何一个列表框项时,才会启用“下一步”按钮。我在这个网站上搜索过,找不到任何人和我做同样的事情。

2 个答案:

答案 0 :(得分:0)

XAML的{​​{1}}内使用已检查的属性:

RadioButton

然后在代码后面的<RadioButton Content="" Checked="RadioButton_Checked" /> 事件的事件处理程序中尝试插入代码以启用Checked

private void RadioButton_Checked(对象发送者,RoutedEventArgs e)     {         //在此处启用按钮,我假设您的按钮名称为Name:newB         newB.IsEnabled = True     }

然后,为了在选择Button中的项目时执行某项操作,请在xaml中的Listbox元素中包含SelectionChanged属性:

ListBox

然后在事件处理程序的代码后面:

ListBox SelectionChanged="OuterListBox_SelectionChanged" Name="outerListBox">

参考:isEnabled property

答案 1 :(得分:0)

最好你可以有两个标志(RadioChecked和ListItemSelected)。并有一个方法SetEnable(),其中检查这两个标志。如果两者都为True,则将isEnable设置为True。否则设为False。在RadioButton Checked事件中,将RadioChecked按钮设置为True并调用SetEnable。同样在ListBox的SelectionChanged事件中,您也可以这样做。

    bool IsRadioChecked = false;
    bool IsItemSelected = false;
    private void RadioButton_Checked(object sender, RoutedEventArgs e)
    {
        IsRadioChecked = true;
        SetEnable();
    }

    private void ListBox_Selected(object sender, RoutedEventArgs e)
    {
        if ((sender as ListBox).SelectedItems.Count > 0)
            IsItemSelected = true;
        if ((sender as ListBox).SelectedItems.Count == 0)
            IsItemSelected = false;
        SetEnable();
    }
    public void SetEnable()
    {
        if (IsRadioChecked && IsItemSelected)
            btn.IsEnabled = true;
        else
            btn.IsEnabled = false;
    }

如果您使用的是MVVM,则可能需要在MVVM中拥有3个bool属性 如下

将此属性绑定到RadioButton的IsChecked属性。因此,如果检查任何一个意味着,那将是真的。         private bool isRadioButtonChecked;

    public bool IsRadioButtonChecked
    {
        get { return isRadioButtonChecked; }
        set { 

            isRadioButtonChecked = value;
            if (IsItemSelected && isRadioButtonChecked)
                BtnEnabled = true;
        }
    }

如果选择了listBox中的任何项,则将此属性设置为True。         private bool isItemSelected;

    public bool IsItemSelected
    {
        get { return isItemSelected; }
        set { isItemSelected = value; }
    }


    Bind the BtnEnabled property to IsEnabled property of Button.
    private bool btnEnabled;

    public bool BtnEnabled
    {
        get { return btnEnabled; }
        set { btnEnabled = value; }
    }

还应该绑定ListBox的SelectedItem的selectedItem属性。

       private object selectedItem;
       public object SelectedItem
        {
         get { return selectedItem; }
         set 
         { 
            selectedItem = value; 
            if(SelectedItem!= null)
            {
                IsItemSelected = true;
                if (IsRadioButtonChecked)
                    BtnEnabled = true;
            }
        }
    }

希望这会对你有所帮助。