这工作正常:
<ItemsControl ItemsSource="{Binding Persons}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Vertical" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Path=FirstName}"/>
<TextBlock Text="{Binding Path=LastName}"/>
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
但是,我想使用用户控件来代替堆栈面板,其中有两个 TextBlocks,使用如下:
<DataTemplate>
<jasControls:NameView/>
</DataTemplate>
但是,有了这个和一百万种其他语法,NameView 什么也没有显示,但它在 ItemsControl 之外的单独测试中工作正常,具有显式设置(依赖)属性 - 例如
<jasControls:NameView FName="{Binding Path=Person.FirstName}" />
我几乎找不到任何这样的例子,并且需要知道如何指定用户控件的属性——或者用户控件如何“接收”单个项目类型(一个人)?使用什么语法?我需要指定数据类型吗?ItemsControl 是否会导致问题,或者是否应该使用任何类似的控件,例如 ListBox?我可以设计它以便用户控件获取整个 Person 对象吗?我在用户控件中需要哪些依赖属性?简而言之,如何将数据获取到用户控件中?!实际涉及的业务类型会稍微复杂一些,涉及用户控件中的一些逻辑,因此我希望使用用户控件。
非常感谢您对此的任何指示 - TIA