XAML 如何在自定义ComboBox控件的下拉唐斯末尾添加“AddNew”按钮?

2fjabf4q  于 12个月前  发布在  其他
关注(0)|答案(1)|浏览(85)

我有一个带有ComboBox的自定义控件,我想在下拉列表的末尾添加一个按钮,上面写着“AddNew”,比如“AddNewStudent”,单击该按钮时,将打开一个表单来注册新学生。
由于我希望创建自定义控件的许多示例,其中一些可能不需要此功能,因此我希望它是可激活的,反之亦然。例如,列出学生成绩的ComboBox不需要此功能,因为成绩是已知的且不变的。另外,我希望当“AddNew”按钮被点击时采取的动作是一个用户可设置的依赖属性,因为当“AddNew”按钮的点击次数对于每个示例都不同。
Here is the repos on github of the Example below


的数据

b5lpy0ml

b5lpy0ml1#

我没看你的源代码。
我将只建议一种简单的典型方法来实现您需要的逻辑(当然,如果我正确理解了您的需要)。

public class SomeViewModel : ViewModelBase
    {
        public ObservableCollection<int> Ints { get; } = new() {0, 1, 2, 3, 4, 5 };

        public RelayCommand AddInt => GetCommand(()=> Ints.Add(Ints.Count));
    }

个字符
要将此逻辑添加到自定义控件中,您需要在其中实现ICommandSource接口,以便用户连接外部命令。并添加另一个Dependency Property来控制ComboBox列表中按钮的可见性。
添加Dependency Properties来更改此按钮的外观也是有意义的:Content、ContentTemplate、Style等。
但就我个人而言,我不认为这有什么意义,因为这个按钮可以添加到列表中非常简单的地方,你的自定义控件被使用,正如我上面所展示的。
然后,您可以以非常多样和简单的方式自定义按钮(或任何其他元素)。没有额外的一大堆Dependency Property,如果在自定义控件的内部逻辑中完成,则必须这样做。

相关问题