Как в wpf передать выделенный в ListBox item в TextBox

270
19 декабря 2018, 20:20

Всем здравствуйте, Есть у меня приложение на wpf, на форме есть ListBox, если в нем я выделил строку, то как мне эту строку автоматически заставить появиться в TextBox. Использую паттерн MVVM, не хочу обращаться к свойствам ViewModel, а хочу чтобы это автоматически в самой View произошло. Сам textbox биндится к свойству из VM, можно ли как то не нарушать этот биндин, но в textbox передать данные, чтобы они там отобразились , мое свойство их эти данные забирает из VIEW, а так приходится руками писать то, что вывел Listbox. Подскажите как можно так сделать.
Вот код XAML

<Window x:Class="Client.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        mc:Ignorable="d"
        Title="Клиентское приложение" Height="859.471" Width="1001.242">
    <Grid>
        <Grid HorizontalAlignment="Left" Height="809" VerticalAlignment="Top" Width="973">
            <Label Content="Имя покупателя" HorizontalAlignment="Left" Height="33" Margin="39,10,0,0" VerticalAlignment="Top" Width="150" FontSize="18"/>
            <Label Content="{Binding Name}" HorizontalAlignment="Left" Height="33" Margin="246,10,0,0" VerticalAlignment="Top" Width="151" FontSize="18"/>
            <ListBox Name="lb" ItemsSource="{Binding Tovarslist,Mode=TwoWay  }" SelectionMode="Multiple"  SelectedItem="{Binding CurrentItem,Mode=TwoWay  }" HorizontalAlignment="Left" Height="100" Margin="39,85,0,0" VerticalAlignment="Top" Width="338" RenderTransformOrigin="0.509,0.485"/>
            <Label Content="Свойства заказа" HorizontalAlignment="Left" Margin="43,223,0,0" VerticalAlignment="Top" Height="25" Width="99"/>
            <Label Content="Предпочтительная дата и время поставки" HorizontalAlignment="Left" Margin="39,280,0,0" VerticalAlignment="Top"/>
            <Label Content="Наименование товара" HorizontalAlignment="Left" Margin="43,342,0,0" VerticalAlignment="Top"/>
            <TextBox   AcceptsReturn="True" HorizontalScrollBarVisibility="Disabled" VerticalScrollBarVisibility="Auto" HorizontalAlignment="Left" Height="21" Margin="219,344,0,444" TextWrapping="Wrap" Text="{Binding FinalTovar ,Mode=TwoWay}" VerticalAlignment="Top" Width="184" />
            <Label Content="Способ доставки" HorizontalAlignment="Left" Margin="43,421,0,0" VerticalAlignment="Top" Height="27" Width="99"/>
            <ListBox  ItemsSource="{Binding Dostavka, Mode=TwoWay}" SelectedItem="{Binding CurrentDostavka, Mode=TwoWay}" HorizontalAlignment="Left" Height="49" Margin="213,421,0,0" VerticalAlignment="Top" Width="184"/>
            <Label Content="Количество" HorizontalAlignment="Left" Margin="43,516,0,0" VerticalAlignment="Top"/>
            <TextBox x:Name="first_name_texbox" PreviewTextInput="first_name_texbox_PreviewTextInput" HorizontalAlignment="Left" Height="23" Margin="165,516,0,0" TextWrapping="Wrap" Text="{Binding Count, Mode=TwoWay}" VerticalAlignment="Top" Width="54"/>
            <DatePicker SelectedDate ="{Binding Dtime, Mode=TwoWay }"   HorizontalAlignment="Left" Height="23" Margin="296,280,0,0" VerticalAlignment="Top" Width="101"/>
            <Button Content="Заказать" HorizontalAlignment="Left" Height="24" Margin="43,633,0,0" VerticalAlignment="Top" Width="146"  Command="{Binding CommandToRun}" />
            <Button Content="Отменить" HorizontalAlignment="Left" Height="24" Margin="219,633,0,0" VerticalAlignment="Top" Width="130"/>
            <TextBlock HorizontalAlignment="Left" Height="523" Margin="471,134,0,0" TextWrapping="Wrap" Text="{Binding ServerResponce,Mode=TwoWay}" VerticalAlignment="Top" Width="474"/>
            <Label Content="Ответ сервера" HorizontalAlignment="Left" Margin="634,62,0,0" VerticalAlignment="Top" Height="42" Width="146" FontSize="18"/>
        </Grid>
    </Grid>
</Window>
Answer 1
<ListBox Name="lb"/> 
<TextBox Text="{Binding ElementName=lb, Path=SelectedValue}"/>

Если в ListBox не просто строки, то нужно будет еще переопределить метод ToString() у класса объектов

READ ALSO
Устройство видео потока. ffmpeg

Устройство видео потока. ffmpeg

Я формирую видео поток с помощью ffmpeg и отправляю по сетиПринимаю и воспроизвожу видео на другой стороне с помощью ffplay

161
С#. Изменение текста веток в treeview

С#. Изменение текста веток в treeview

Столкнулся с проблемойЯ хочу чтобы в моей программе при изменения текста в treeview выполнялась команда UPDATE в базу данных

179
System.ArgumentException: &ldquo;Недопустимый параметр.&rdquo;

System.ArgumentException: “Недопустимый параметр.”

Через несколько секунд после запуска останавливается с ошибкойЧто я делаю не так?

231
Составной ключ в Dictionary

Составной ключ в Dictionary

Допустим, есть класс, у которого есть 2 цифровых поля

193