如何制作只有特殊类型的ItemsControl?

我的英语能力很差,因为我不会说英语。 我希望你能理解。

我想构造一个只能接收特殊类型的控件。 我正在考虑构造它派生ItemsItem。 首先,我尝试构造派生Panel的方法,但是我认为该方法不适用于该主题,因此我尝试使用ItemControl。

无论如何,这里的问题是ItemsControl的ItemCollection可以具有所有类型,但是我希望我尝试构造的控件仅具有特殊类型。

例如,我期望的代码构造如下。 (我要构造的控件的名称假定为“ DockManager”。) (“ DockManager”可以具有的特殊类型的名称,假定为“ DockLayout”和“ DocumentLayout”。)

一个成功的例子。

  Future<void> LoadRecipes() async{
    String jsonString = await LoadRecipesFromJson();
    final jsonResponse = json.decode(jsonString);
    Recept recept = new Recept.fromJson(jsonResponse);

    setState(() {
      test = recept.title;
    });
  }

失败示例

<DockManager>
    <DockLayout Header="example" Content="{Binding}" DockManager.Dock="Top"/>
    <DockLayout Header="example2" Content="{Binding}" DockManager.Dock="Bottom"/>
    <DocumentLayout Header="example2" Content="{Binding}"/>
</DockManager>

我可以在ItemsControl的基础上达到上述目标吗? 我不愿意坚持ItemsControl。 如果您有更好的方法可以达到上述目标,您可以教我方法吗?

感谢您阅读。

a4870126sdo 回答:如何制作只有特殊类型的ItemsControl?

  

我可以在ItemsControl的基础上实现上述目标吗?

简短的回答:否

ItemsControl具有一个ItemsSource属性,可以将其设置为任何IEnumerable,并且您无法通过创建从其派生的新类来更改此API。

因此,如果您想要一个仅适用于特定类型项目的控件,则必须从头开始创建自己的自定义控件。您可以看看source code of the ItemsControl并从此继续。

本文链接:https://www.f2er.com/2910489.html

大家都在问