2017-02-11 17 views
0

меня настроить WPF с несколькими ListBoxes и кнопка добавления:Добавить товар в мой выбор ListBox на кнопку мыши

<Window x:Class="QuickSlide_2._0.Window1" 
    x:Name="load_style" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:self="clr-namespace:QuickSlide_2._0" 
    xmlns:e="http://schemas.microsoft.com/expression/2010/interactivity" 
    Title="Load_style" Height="300" Width="300" MinHeight="720" MinWidth="1280" WindowStyle="None" AllowsTransparency="True" Background="#B0000000" AllowDrop="True" WindowStartupLocation="CenterScreen" ShowInTaskbar="False"> 

    <Grid> 

    <Rectangle Height="720" HorizontalAlignment="Left" Name="rectangle1" Stroke="#00000000" VerticalAlignment="Top" Width="1280" MinHeight="320" MinWidth="380" Fill="DarkGray"/> 


    <ListBox Height="241" HorizontalAlignment="Left" Margin="502,371,0,0" Name="Presentation_slide_items" VerticalAlignment="Top" Width="199" /> 

    <ListBox Name="subjects_list" Margin="74,154,1039,171" ItemsSource="{Binding ElementName=styles_list, Path=SelectedItem.subjects}"/> 
    <ListBox Name="sub_subjects_list" Margin="264,154,849,171" ItemsSource="{Binding ElementName=subjects_list, Path=SelectedItem.sub_subjects}"/> 
    <ComboBox x:Name="styles_list" HorizontalAlignment="Left" VerticalAlignment="Top" Width="120" Margin="74,112,0,0"/> 
    <ListBox Name="user_inputs" Margin="502,154,565,421" ItemsSource="{Binding ElementName=sub_subjects_list, Path=SelectedItem.possible_input, Mode=TwoWay}" > 
     <ListBox.ItemTemplate> 
      <DataTemplate> 
       <TextBox Name="TextBoxList" Text="{Binding input}" BorderThickness="0" />      
      </DataTemplate> 
     </ListBox.ItemTemplate> 
    </ListBox> 
    <Button x:Name="button_add_input" Content="Add" HorizontalAlignment="Left" Margin="502,279,0,0" VerticalAlignment="Top" Width="106" Command="{Binding ElementName=sub_subjects_list.add_input} /> 
</Grid> 

Теперь я хочу, чтобы добавить дополнительный user_input в список в ListBox user_inputs при нажатии на кнопку «button_add_input». Я искал, и похоже, использование опции «команда» кнопки может быть способом. Это мой класс «sub_subject»

 public class sub_subject 
{ 
    public string short_name { get; set; } 
    public string name { get; set; } 
    public bool read_from_db { get; set; } 
    public string table_name { get; set; } 
    //public ObservableCollection<string> possible_input { get; set; } 
    public ObservableCollection<possible_input> possible_input { get; set; } 

    public sub_subject(string name) 
    { 
     this.name = name; 

     possible_input = new ObservableCollection<possible_input>(); 
     //possible_input = new ObservableCollection<string>(); 
    } 
    public override string ToString() 
    { 
     return this.name; 
    } 
    public void add_input() 
    { 
     possible_input input = new possible_input(); 
     input.input = ""; 
     possible_input.Add(input); 
    } 
} 

Я думал, что я могу добавить функцию к классу, который добавляет possible_input к ObservableCollection и вызова этой функции в команде кнопки. Но я просто не могу понять, как настроить правильную команду. Какие-либо предложения?

ответ

0

Я предполагаю, что sub_subject - это viewmodel (datacontext) окна (вид).

В этом случае вы должны добавить в проект класс Command. Это реализация ICommand. Вы можете найти реализацию ICommand здесь: https://msdn.microsoft.com/en-us/magazine/dd419663.aspx

После этого вам нужно будет создать свойство в вашей модели просмотра для команды, которая вызывает метод add_input. Затем привяжите свойство своей команды к свойству Command кнопки.

+0

Спасибо за реакцию Niels. Это похоже на путь, даст вам попробовать! –