ここに単純なリストボックスがあります。データをバインドした画像へのリンクです。1つのアイテム(1行)をタップすると、リストボックスのアイテム/行が選択されています/紫色ですが、実際にはこのアイテムは実際には選択されておらず、行の色が変わるだけですが、画像またはテキストをクリックすると、クリックした行が選択されていません/バイオリンですが、コード内の項目が選択されています。あなたが私の言っていることを理解しているかどうかはわかりません。つまり、空白行をクリックすると、行は視覚的に選択されますが、送信者のようなリストボックス項目はデータを取得しません。テキストまたは画像をクリックすると、送信者はデータを取得しますが、視覚的に選択されません。行が選択されている/紫で、アイテム送信者がデータを取得する場所をクリックすると、どうすればよいですか?
そして私の2番目の質問は、行のように使用される長方形がテキストのように最大幅を持っている理由です。この長方形をリストボックスの全幅でストレッチしたいのですが、これは可能ですか?
XAML:
<ListBox x:Name="lbMessagesUsersList" Foreground="Black" ItemsSource="{Binding MyDatasMessagesUserList }">
<ListBox.ItemTemplate>
<DataTemplate>
<ListBoxItem Tapped="userTapped" Tag="{Binding}" >
<StackPanel>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="50"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Image Grid.Column="0" Source="{Binding MessengeHisPhoto}" HorizontalAlignment="Left" Width="40" Height="40" Margin="5,-18,0,-18" Stretch="Fill" ></Image>
<TextBlock x:Name="tbMessengerName" Text="{Binding MessengeFullName}" HorizontalAlignment="Left"
Grid.Column="1" Margin="25,0,0,0"/>
</Grid>
<Rectangle Height="1" Margin="0,0,0,-38" HorizontalAlignment="Stretch">
<Rectangle.Fill>
<SolidColorBrush Color="Black"/>
</Rectangle.Fill>
</Rectangle>
</StackPanel>
</ListBoxItem>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
CS:
private void userTapped(object sender, TappedRoutedEventArgs e)
{
var button = sender as ListBoxItem;
if (button != null)
{
var subject = MyDatasMessagesUserList.FirstOrDefault(sub => sub == button.Tag);
if (subject != null)
{
IdOfChoosenUser = subject.MessengeIdUser;
}
}...
また、ListbOxItem を削除して、バインディング タグを stackPanel に設定しようとしましたが、これもうまくいきません。{