Eng Mohamed Bassuny Ответов: 1

Как получить значение из textblock в listbox


я новичок в WPF и пробую его но часть кода более сложна чем WForm

моя проблема заключается в том, что я ищу, как я могу получить текст textblock из listboxitem в listbox

я попробовал несколько кодов, но не могу получить текст выбранного элемента из списка

спасибо

Что я уже пробовал:

<ListBox x:Name="listWithImg" Height="200" Width="200" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="250 20 0 0" SelectionChanged="listWithImg_SelectionChanged">
    <ListBoxItem Height="50">
        <StackPanel Orientation="Horizontal">
            <Image Height="25" Width="25" Source="Image/C.png"/>
            <TextBlock Text="C Programming" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="10 0 0 0"/>
        </StackPanel>
    </ListBoxItem>
    <ListBoxItem Height="50">
        <StackPanel Orientation="Horizontal">
            <Image Height="25" Width="25" Source="Image/CPP.png"/>
            <TextBlock Text="C Plus Plus Programming" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="10 0 0 0"/>
        </StackPanel>
    </ListBoxItem>
    <ListBoxItem Height="50">
        <StackPanel Orientation="Horizontal">
            <Image Height="25" Width="25" Source="Image/CSharp.png"/>
            <TextBlock Text="C Sharp Programming" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="10 0 0 0"/>
        </StackPanel>
    </ListBoxItem>
    <ListBoxItem Height="50">
        <StackPanel Orientation="Horizontal">
            <Image Height="25" Width="25" Source="Image/Raspberry.png"/>
            <TextBlock Text="Raspberry" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="10 0 0 0"/>
        </StackPanel>
    </ListBoxItem>
</ListBox>

<TextBlock x:Name="txtblkSelectedItem" Text="Select To CHange" Height="30" Width="200" VerticalAlignment="Top" HorizontalAlignment="Center" Margin="100 240 0 0" Padding="5" />



private void listWithImg_SelectionChanged(object sender, SelectionChangedEventArgs e)
{


    txtblkSelectedItem.Text = name;
}

1 Ответов

Рейтинг:
4

Member1x

Привет,

вы можете попробовать это:

txtblkSelectedItem.Text = ((((sender as ListBox).SelectedValue as ListBoxItem).Content as StackPanel).Children[1] as TextBlock).Text;

Он должен показать ваш желаемый результат. Но вы должны рассмотреть привязку данных/шаблоны и создать объекты для ваших элементов. Затем вы можете напрямую получить доступ к свойствам.


Eng Mohamed Bassuny

эта работа идеальна .. спасибо

но я все время задаюсь вопросом, почему код WPF сложнее кода Windows form ?!

Member1x

Я думаю, что это точка зрения. WPF и формы различны. А то, к чему вы привыкли, всегда проще. ;)
Оба вида кода имеют свои преимущества.

Nemesis Rufius

Я пробовал это, но это не сработает.