2015-04-27 124 views
0

嗨新的WPF程序員在這裏。我似乎無法得到這個工作,我希望也許你有一些想法。當我在用戶定義表(ListBox)中選擇一個項目時,我希望它將數據(ObservableCollection)填充到我的數據網格中。然後我將使用下面的插入編輯保存按鈕進行編輯。用戶定義表(ListBox)中的每個項目都有多個選項和說明。將ListBox選定項目數據綁定到DataGrid的最佳方法WPF

我有一個XAML看起來像這樣:

<Grid HorizontalAlignment="Left" Height="505" VerticalAlignment="Top" Width="805"> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="210*"/> 
     <ColumnDefinition Width="233*"/> 
     <ColumnDefinition Width="315*"/> 
     <ColumnDefinition Width="47*"/> 
    </Grid.ColumnDefinitions> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="33*"/> 
     <RowDefinition Height="217*"/> 
     <RowDefinition Height="86*"/> 
     <RowDefinition Height="89*"/> 
     <RowDefinition Height="81*"/> 
    </Grid.RowDefinitions> 

    <ListBox x:Name="_listbox" HorizontalAlignment="Left" Height="103" VerticalAlignment="Top" Width="210" Margin="0,1,0,0" Grid.Row="1"> 
     <ListBox.ItemContainerStyle> 
      <Style TargetType="{x:Type ListBoxItem}"> 
       <Setter Property="IsSelected" Value="{Binding Selected}"/> 
      </Style> 
     </ListBox.ItemContainerStyle> 

     <ListBoxItem Content="ARNotes" /> 
     <ListBoxItem Content="Item2"/> 
     <ListBoxItem Content="Item3"/> 
     <ListBoxItem Content="Item4"/> 
     <ListBoxItem Content="Item5"/> 
     <ListBoxItem Content="Item6"/> 
    </ListBox> 

    <ComboBox HorizontalAlignment="Left" Height="30" Margin="4,0,0,0" VerticalAlignment="Top" Width="257" Grid.Column="2"> 
     <ComboBoxItem Content="FromCompanyTable"/> 
    </ComboBox> 

    <DataGrid x:Name="_grid" ItemsSource="{Binding SelectedItem, ElementName=_listbox}" AutoGenerateColumns="False" Grid.ColumnSpan="2" Grid.Column="1" Margin="24,2,0,3" Grid.Row="1" > 
     <DataGrid.Columns> 
      <DataGridTextColumn x:Name="Choice" Width="*" Header="Choice" Binding="{Binding choice}"/> 
      <DataGridTextColumn x:Name="Descip" Width="*" Header="Description" Binding="{Binding description}"/> 
     </DataGrid.Columns> 
    </DataGrid> 

而且我的模型:

public class NoteList : ObservableCollection<ARNotes> 
{  
    public NoteList() : base() 
    { 
     Add(new ARNotes("A", "Adjustment")); 
     Add(new ARNotes("C", "Changed")); 
     Add(new ARNotes("D", "Notes")); 
     Add(new ARNotes("G", "Information")); 
    } 
} 

public class ARNotes 
{ 
    private string choice; 
    private string description; 

    public ARNotes(string choice, string description) 
    { 
     this.choice = choice; 
     this.description = description; 
    } 

    public string Choice 
    { 
     get { return choice; } 
     set { choice = value; } 
    } 

    public string Description 
    { 
     get { return description; } 
     set { description = value; } 
    } 
} 
+0

您的'_listbox'沒有對象項,因爲您爲每個項目設置了字面上的「內容」。 – dytori

回答

0

的ItemsSource必須是項目的集合。您將它設置爲單個項目。通過使用列表框你沒有獲得任何東西。我建議僅使用DataGrid並將該ItemsSource綁定到您的NoteList