Когда элемент списка выбран, отображать связанные данные в другом списке - PullRequest
1 голос
/ 08 марта 2019

Я создаю приложение с WPF C # и пытаюсь отобразить значения в списке, который показывает, когда выбран элемент из другого списка. Оба списка должны получать данные из моей базы данных SQL.

списки, когда ничего не выбрано:

How listboxes should look when nothing is selected

kistboxes, когда элемент выбран:

How listboxes should look when an item is selected

Вот так я отображаю значения в первом списке (прежде чем кто-то скажет это, я знаю, что он уязвим для внедрения SQL).

C #:

public void TradeList() {
    DataTable dt = new DataTable();
    SqlDataAdapter adpt = new SqlDataAdapter("SELECT DISTINCT Trade from tblTrades", sqlConTwo);
    adpt.Fill(dt);

    foreach(DataRow dr in dt.Rows) {
        Area.Items.Add(dr["Trade"].ToString());
    }
}

XAML:

<StackPanel>
  <TextBox x:Name="TradesSelected" Width="665" BorderBrush="#FF939393" Padding="2" BorderThickness="1"></TextBox>
  <ListBox SelectionMode="Multiple" x:Name="Trade" Width="665" Height="100" BorderBrush="#FF939393" Padding="2" BorderThickness="1 0 1 1" ItemsSource="{Binding Path=Trade}" SelectionChanged="Trade_SelectionChanged" >
    <ListBox.ItemContainerStyle>
      <Style TargetType="ListBoxItem">
        <Setter Property="IsSelected" Value="{Binding IsSelected}"/>
      </Style>
    </ListBox.ItemContainerStyle>
  </ListBox>
</StackPanel>
<StackPanel Margin="10 0 0 0">
  <TextBox x:Name="SkillSelected" Width="665" BorderBrush="#FF939393" Padding="2" BorderThickness="1"></TextBox>
  <ListBox SelectionMode="Multiple" x:Name="Skills" Width="665" Height="100" BorderBrush="#FF939393" Padding="2" BorderThickness="1 0 1 1" ItemsSource="{Binding Path=Skills}">
    <ListBox.ItemContainerStyle>
      <Style TargetType="ListBoxItem">
        <Setter Property="IsSelected" Value="{Binding IsSelected}"/>
      </Style>
    </ListBox.ItemContainerStyle>
  </ListBox>
</StackPanel>

В моей таблице колонка с навыками в ней называется Навыки. Я нашел способ сделать это путем жесткого кодирования всех сделок и навыков, но это не идеально, так как в моей таблице много строк, и это будет очень много времени.

Ответы [ 2 ]

2 голосов
/ 08 марта 2019

Как я вижу, у вас есть 2 ObservableCollection Skills и Trade в ListBoxs SelectedItem, чтобы получить выбранный элемент списка, поэтому, когда произошло Trade_SelectionChanged, вы можете получить выбранный навык и заполнитьTrade

1 голос
/ 08 марта 2019

Исправлена ​​проблема с Trade_SelectionChanged, исправление было прямо перед моими глазами все время ..

...