在动态单选按钮点击时未能将不同项添加到组合框中。

23 浏览
0 Comments

在动态单选按钮点击时未能将不同项添加到组合框中。

我正在开发我的WPF应用程序中的单选按钮和组合框。尽管我是一个C++开发者,但我最近转向了C#。我的应用程序涉及上述组件的动态生成。基本上,我在我的应用程序中创建了4个动态的单选按钮,当点击每个按钮时,我应该向我的组合框中添加不同的项目。以下是代码:

XAML:

FPGARadioWidgetViewModel 类:

public ObservableCollection Children { get; set; }

public FPGARadioWidgetViewModel()

{

Children = new ObservableCollection();

Children.Add(new FPGAViewModel() { RadioBase = "Base 0x0", ID = 0 });

Children.Add(new FPGAViewModel() { RadioBase = "Base 0x40", ID = 1 });

Children.Add(new FPGAViewModel() { RadioBase = "Base 0x80", ID = 2 });

Children.Add(new FPGAViewModel() { RadioBase = "Base 0xc0", ID = 3 });

}

FPGAViewModel 类:

private bool sBaseCheck;

public bool BaseCheck

{

get { return this.sBaseCheck; }

set

{

this.sBaseCheck = value;

AddComboItems();

this.OnPropertyChanged("BaseCheck");

}

}

private ObservableCollection _RegComboList;

public ObservableCollection RegComboList

{

get { return _RegComboList; }

set

{

_RegComboList = value;

OnPropertyChanged("RegComboList");

}

}

private void AddComboItems()

{

int baseRegister = 0x40 * ID;

ObservableCollection combo = new ObservableCollection();

for (int i = 0; i < 0x40; i++)

{

int reg = (i * 8) + baseRegister;

combo[i] = "0x" + reg.ToString("X");

}

RegComboList = new ObservableCollection(combo);

OnPropertyChanged("RegComboList");

}

private bool isRegisterItemsVisible = false;

public bool IsRegisterItemsVisible

{

get { return isRegisterItemsVisible; }

set

{

isRegisterItemsVisible = value;

OnPropertyChanged("IsRegisterItemsVisible");

OnPropertyChanged("RegComboList");

}

}

如果你注意到,当点击特定的单选按钮时,它应该根据ID在组合框中添加具有不同值的项目。必须确保只有在点击任何单选按钮时,才会添加该按钮的项目,并且组合框的先前内容应该被清除。我正在尝试使用上面的代码做同样的事情,但是当我调试时,组合框中似乎没有任何内容显示。

请帮帮我 🙂

0
0 Comments

问题的原因是因为combobox绑定了不同的字符串引用。每次单选按钮点击都会更改项并返回新的列表引用。尝试通过在其中删除现有项,然后添加新项来重用当前的RegComboList。如果这样无法更新combobox,则将绑定设置为RegComboList的双向绑定。

解决方法是在窗口初始化时,将combobox加载初始的5个单词。然后每当用户点击按钮时,将新的一组单词放入列表中,从而更改combobox的内容。需要注意的是在每次更改列表内容之前要清除列表中的项。

在代码中设置了一个MainWindow类,该类实现了INotifyPropertyChanged接口,用于通知属性更改。MainWindow类有一个RegComboList属性,该属性是一个ObservableCollection类型的属性,用于在combobox中显示项。在窗口初始化时,通过调用GenerateWords方法生成初始的单词列表,并将RegComboList属性设置为该列表,然后将DataContext设置为当前窗口。

GenerateWords方法用于生成单词列表,该方法首先清除RegComboList中的所有项,然后使用正则表达式将输入的字符串拆分成单词,并将指定数量的单词添加到RegComboList中。Skip变量用于跟踪已经生成的单词数量。

Button_Click_1方法用于处理按钮的点击事件,每次点击按钮时会生成一个随机数,并根据该随机数生成相应数量的单词列表。

最后,建议在尝试动态加载之前,先加载一些虚拟文本,以确定问题出现的位置。

以上就是对问题出现的原因及解决方法的整理。

0
0 Comments

问题原因:在动态单选按钮点击时,无法向组合框中添加不同的项。

解决方法:

1. 将组合框的ItemsSource与选中的单选按钮关联起来。

2. 将ItemsControl更改为使用具有现有DataTemplate的ListBox,通过绑定IsChecked属性到ListBoxItem的IsSelected属性来获取选中的单选按钮。

3. 在包含Children集合的ViewModel中添加一个YourSelectedItem属性,并在构造函数中调用AddComboItems()方法来填充组合框的项。

4. 将AddComboItems()方法中的combo[i] = "0x" + reg.ToString("X");更改为combo.Add("0x" + reg.ToString("X"));。

5. 确保正确设置了OnPropertyChanged("YourSelectedItem")和OnPropertyChanged("RegComboList")。

以上就是关于"Failing to add different items in combobox on dynamic radiobutton click"问题的原因和解决方法。

0