我有一个使用C#编程的WPF表单。我使用的是.Net 4.0。在表单中,我有两个radiobuttons和一个包含4个项目的列表框和一个名为" NEXT"
我希望只有当选择了任何一个单选按钮项和任何一个列表框项时,才会启用“下一步”按钮。我在这个网站上搜索过,找不到任何人和我做同样的事情。
答案 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">
答案 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;
}
}
}
希望这会对你有所帮助。