【发布时间】:2015-03-03 08:50:08
【问题描述】:
我有用户控件,它有两个控件 标签和文本块
<UserControl x:Class=MyClass....
d:DesignHeight="300" d:DesignWidth="300" x:Name="MyUsrCtrl">
<StackPanel>
<Label Content={Binding MyLabelContent} x:Name="MyLabel"...../>
<TextBlock Content={Binding MyTextBlockContent} x:Name="MyTextBlock"...../>
</StackPanel>
</UserControl>
在我的 MainWindow 中,我有一个 ListBox,其 ItemSource 绑定到此用户控件的集合
<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
<Grid>
<ListBox x:Name="myListBox" Grid.Row="0"
ItemsSource="{Binding Path=_myControl}"> // collection of user controls
<ListBox.ItemTemplate>
<DataTemplate>
<Grid>
<local:MyUserControl x:Name="myUserControl" />
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
在列表框中选择任何项目时,如何获取Textblock 和Label 的值?
【问题讨论】:
-
使用 ListBox 的 SelectedItem 属性。
-
当我点击文本块上的某处时它不起作用
-
试试看这个帖子:[用户控件与主窗口的关系][1][1]:stackoverflow.com/questions/16897188/…
-
ItemsSource 不应绑定到控件集合。相反,应该有一个数据项的集合(即视图模型中的一个类)。
-
MSDN 上的Data Templating Overview 文章是一个很好的起点。您只需创建一个带有标签和文本块的 DataTemplate,而不是 UserControl。 DataTemplate 当然也可能包含您的 UserControl,但这不是绝对必要的。