여기에 간단한 목록 상자가 있습니다 : link to image 데이터를 바인딩했습니다. 이제는 한 항목 (한 행)을 탭하면 목록 상자 항목/행이 선택/보라색으로 표시되지만 실제로이 항목은 행 변경 색만 선택되어 있지 않지만 이미지 나 텍스트를 클릭하면 내가 선택한 부분이 아닌 행을 선택/바이올린이지만 코드의 항목이 선택되었습니다. 내가하는 말을 이해하는지 확신 할 수 없다. 간단히 말해 빈 공간 행을 클릭하면 행이 시각적으로 선택되지만 발신자는 목록 상자 항목과 같은 데이터를 가져 오지 않습니다. 텍스트 나 이미지를 클릭하면 보낸 사람이 데이터를 가져 오지만 시각적으로 선택되지는 않습니다. 행을 클릭하면 행을 선택할 수 있습니다. 예를 들어 바이올렛 및 항목을 보낸 사람이 데이터를 가져 옵니까?목록 상자에서 선택된 항목을 데이터 템플릿으로 바인딩하기
내 두 번째 질문은 내 직사각형이 선과 같이 사용되는 이유입니다. 텍스트처럼 최대 너비가 있습니다.이 사각형을 목록 상자의 전체 너비로이 가능하게 할 수 있습니까?
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에에 태그 만이 그나마 작업을 바인딩 설정 {
는 StackPanel' 확인 및 단지 액세스'lbMessagesUsersList.SelectedItem'으로 '보낸 사람을 건너 뛰는 고려할 수 :
ItemContainerStyle
를 사용하여이 작업을 수행합니다. –hm 귀하의 코드를 사용하고 라인은 스트라이크입니다. 한 행의 탭을 선택/위반했으나 OK이지만 문제는 여전히 userTapped 이벤트가 호출되지 않았습니다. 이미지 또는 텍스트를 탭한 후에 만 userTapped이 호출되지만 빈 공간을 탭하면 아무것도하지 않습니다. –
@PavolFranek 나는 당신이 무슨 뜻인지 안다. 나는 1) ListBox 자체에서 'Tapped'를 사용하거나 2) 대신 ListBox에서 'SelectionChanged' 이벤트를 사용하는 것을 제안한다. – McGarnagle