gpt4 book ai didi

WPF ItemsControl : restrict the type of the item to a specific one

转载 作者:行者123 更新时间:2023-12-02 04:11:06 25 4
gpt4 key购买 nike

我正在创建一个 WPF 自定义控件作为练习,以在 VS 面板中显示日志消息(错误/警告/消息)。该控件是一个ItemControl,每个项目都是要显示的消息。但是我必须将消息分类到正确的类别中,所以我需要每个项目都暴露一些东西(可能是一个界面),让控件知道如何对消息进行分类。我不知道如何强制 Item 为某种类型,我该如何实现?
设计策略错了吗?
谢谢!

最佳答案

您可以从 ItemsControl 继承您的自定义控件并创建一个强类型的集合属性,然后在您的控件的模板中放入以下行:

<Setter Property="ItemsSource" Value="{Binding MyStronglyTypedCollectionalPropertyName}" />

我经常使用 ObservableCollections。

您使用 ItemsControl 的事实并不要求您直接使用它的 ItemsSource,您可以改为绑定(bind)到它。

附言从技术上讲,任何人仍有可能直接绕过 MyStronglyTypedCollectionalPropertyName 设置 ItemsSource。就我个人而言,我不认为在这种情况下抛出是一个好主意,但您可以从 OnPropertyChanged 中检查值类型:
protected override void OnPropertyChanged(DependencyPropertyChangedEventArgse) 
{

if (e.Property == ItemsControl.ItemsSourceProperty && e.NewValue as MySuperTime == null)
{

throw new ArgumentException("ItemsSource value must be of 'MySuperTime' type.");
}

base.OnPropertyChanged(e);

}

关于WPF ItemsControl : restrict the type of the item to a specific one,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5139838/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com