我有一个列表框,其项目模板是用户控件:
<ListBox
x:Name="ChatBox"
Width="450"
ItemsSource="{Binding ChatMessage}">
<ListBox.ItemTemplate>
<DataTemplate>
<local:ChatItem DataContext="{Binding ChatMessage}"/>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
在我的代码背后:
messages = new ObservableCollection<ChatMessage>(dbMessages);
ChatBox.ItemsSource = messages;
如何从控件内部获取绑定元素,即聊天消息对象?
感谢您的帮助
答案 0 :(得分:0)
您的 ChatItem usercontrol会自动将其Datacontext转换为 ChatMessage 对象。不需要再次设置它。并且对于将usercontrol的属性绑定到ChatMessage对象属性,那么你的ChatItem属性必须是依赖属性,如果你已经拥有它们,那么只需将它们绑定到ChatMessage属性就像这样。
<ListBox
x:Name="ChatBox"
Width="450"
ItemsSource="{Binding ChatMessage}">
<ListBox.ItemTemplate>
<DataTemplate>
<local:ChatItem DataContext="{Binding ChatMessage}" ChatItemDependencyProperty = "{Binding Path=ChatMessageProperty}" />
</DataTemplate>
</ListBox.ItemTemplate>
希望它可以帮助你..