我是银光新手
假设我正在编写一个包含DataTemplate的用户控件(名称为AAA.xaml),我希望通过数据绑定在其中拥有另一个用户控件(在BBB.xaml中定义)实例。
我在AAA.cs(AAA.xaml的c#文件)中初始化BBB用户控件的实例(名称为bbb),我想在AAA的xaml中使用这样的东西:
<DataTemplate>
<someKindOfControl SomeAttributeOfControl={Binding bbb} />
<DataTemplate>
在AAA中显示BBB用户控件或者完全错误是否可行?如果它可以工作,我该怎么做才能正确绑定用户控件实例?我应该使用哪种控件?
答案 0 :(得分:2)
我可能误解了您的问题,但您不需要使用绑定将一种控件的实例放入另一种控件的实例中。我建议从ContentControl派生someKindOfControl,然后你可以这样做:
<DataTemplate>
<someKindOfControl>
<bbb/>
</someKindOfControl>
</DataTemplate>
请确保在someKindOfControl的默认样式中使用ContentPresenter - 这将确定bbb显示的位置。
另一方面,如果你想在someKindOfControl中插入许多控件,最好使用模板部件插入控件并为DataTemplate中的someKindOfControl提供样式:
<DataTemplate>
<someKindOfControl Style={StaticResource SomeKindOfStyle}/>
<DataTemplate>
SomeKindOfStyle提供了一个ControlTemplate,它将许多类型的自定义控件放入someKindOfControl的各个模板部分:
<UserControl.Resources>
<Style x:Name="SomeKindOfStyle" TargetType="myNamespace:someKindOfControl">
<Setter Property="ControlTemplate">
<Setter.Value>
<ControlTemplate>
<bbb x:Name="PART_TopRightControl/>
<bbb x:Name="PART_BottomLeftControl/>
<bbb x:Name="PART_CenterControl/>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</UserControl.Resources>
这有点复杂,但可以允许您将多个自定义bbb控件放入someKindOfControl的一个实例中。请记住,我并不完全确定你所追求的是什么,但如果你发布更多信息我可能会澄清。
答案 1 :(得分:0)
您无法绑定到数据模板中的用户控件。
数据模板是一种用户控件。