私はDataTemplateを含むlsitboxを持っていて、そのDataTemplateの中にはGridが含まれています。私はMouseDown ClickListenerをグリッドに付けました。今私はそれをクリックするたびにそのグリッドの要素を取得したいです。 .csファイル内のグリッド内の要素にアクセスする方法は?
<ListBox x:Name="listBox" HorizontalAlignment="Left" Height="222"
Margin="28,75,0,0" VerticalAlignment="Top" Width="244" ItemTemplate="
{DynamicResource DataTemplate1}" BorderThickness="5,1">
<ListBox.Resources >
<DataTemplate x:Key="DataTemplate1">
<Grid Width="205" Height="84" MouseDown="ListClickListener">
<Label x:Name="nameLabel" Content="{Binding FullName}"
HorizontalAlignment="Left" Margin="68,0,0,0" VerticalAlignment="Top"
Width="127" Height="31"/>
<Label x:Name="numberLabel" Content="{Binding
PhoneNumber}" HorizontalAlignment="Right" Margin="0,31,10,0"
VerticalAlignment="Top" Width="127" Height="26"/>
<Ellipse x:Name="ellipse" HorizontalAlignment="Left"
Height="60" VerticalAlignment="Top" Width="60">
<Ellipse.Fill>
<ImageBrush ImageSource="{Binding Picture}"
Stretch="UniformToFill"/>
</Ellipse.Fill>
</Ellipse>
</Grid>
</DataTemplate>
</ListBox.Resources>
</ListBox>
及び方法「ListClickListener」は次のとおりです。
private void ListClickListener(object sender, MouseButtonEventArgs e)
{
}
これらの要素で何をしたいですか?あなたは、WPFを使って物事を行う最良の方法ではないアプローチを選択しました。 –
これらの要素の値を取得したいだけです。Labelのコンテンツ –
Labelのコンテンツは、DataContectの 'FullName'プロパティにバインドされています。 '((FrameworkElement)sender).DataContext'をリストボックスに表示される項目の型にキャストします。アイテムクラスの名前が 'MyListBoxItemClass'の場合、' var vm =(MyListBoxItemClass)((FrameworkElement)sender).DataContext;を使用します。 var fullName = vm.FullName; ' –