2011-01-11 20 views
0

DataGridがTreeViewのSelectedItemChangedイベントに値を設定すると、オブジェクトが見つかってそれに応じて行が作成されますが、行はテキストなしで入力されるか空白になります。だから私はそれが私のオブジェクトを見つけることを知っているが、それは適切に表示されていません。誰かが私がエラーを起こした場所を見たり、変更や修正を提案したりしますか?前もって感謝します!ここで DataGridでTreeViewのSelectedItemChangedに空白行が設定される

は、CSHARPのDataGridののItemsSourceを設定されているコード(私はラムダ式と.dbmlとLINQを使用しています)です:

dgSystemSettings.ItemsSource = (tvSystemConfiguration.SelectedItem as SYSTEM_SETTINGS_GROUP) 
           .SYSTEM_SETTINGS_NAMEs 
           .Join(ssdc.SYSTEM_SETTINGS_VALUEs, x => x.SSN_ID, 
            y => y.SSV_SSN_ID, 
            (x, y) => new { SYSTEM_SETTINGS_NAME = x, 
            SYSTEM_SETTINGS_VALUE = y }); 

そして、ここでの.xamlです:

<DataGrid Name="dgSystemSettings" 
       AutoGenerateColumns="False" 
       Height="447" Width="513" 
       DockPanel.Dock="Right" 
       ItemsSource="{Binding}" 
       VerticalAlignment="Top" 
       Margin="10,10,0,0"> 
     <DataGrid.Columns> 
      <DataGridTextColumn x:Name="colDisplayName" 
           Header="Name" 
           Binding="{Binding SSN_DISPLAY_NAME}"></DataGridTextColumn> 
      <DataGridTextColumn x:Name="colValue" 
           Header="Value" 
           Binding="{Binding SSV_VALUE}"></DataGridTextColumn> 
     </DataGrid.Columns> 
    </DataGrid> 

SSN_DISPLAY_NAME SYSTEM_SETTINGS_NAMESの列です SSV_VALUEはSYSTEM_SETTINGS_VALUESの列です

私のラムダ式でテーブルに参加しました。私はDataGridにこれらの2つの列だけを表示することができます。私はあなたが以下にDataGridTextColumnのテキストを変更する可能性があると考えている

+0

バインディングを実行している場合にItemsSourceを設定する必要はありません。また、DataContextを設定しなかった場合は、列のBindingが機能しません。親コントロールまたはビューのDataContextを設定しましたか? – Brady

+0

@Brady、DataGridのItemsSourceを設定すると、DataGridTextColumnのバインディングが機能します。 ItemsSourceの代わりにDataContextを設定すると同様に動作します。しかし、それは彼が持っている問題ではありません。 – Paxenos

答えて

1

<DataGrid Name="dgSystemSettings" AutoGenerateColumns="False" Height="447" Width="513" DockPanel.Dock="Right" ItemsSource="{Binding}" VerticalAlignment="Top" Margin="10,10,0,0"> 
    <DataGrid.Columns> 
     <DataGridTextColumn x:Name="colDisplayName" Header="Name" Binding="{Binding SYSTEM_SETTING_NAME.SSN_DISPLAY_NAME}"></DataGridTextColumn> 
     <DataGridTextColumn x:Name="colValue" Header="Value" Binding="{Binding SYSTEM_SETTING_VALUE.SSV_VALUE}"></DataGridTextColumn> 
    </DataGrid.Columns> 
</DataGrid> 

あなたの行は、アイテムの正しい数を移入されたので、私はそれが結合問題でなければなりませんでした考え出しました。 DataGridのItemsSourceを設定すると、オブジェクトのView Collectionが検索されます。あなたのデータはすべてそこにありました。バインディングにテーブル名を含めるだけでした。コードの各項目には、テーブルの2つのオブジェクトが含まれており、テーブルには、探していたプロパティが含まれていました。

+0

おかげさまで、PaxenosはSQL結合のように完璧に働きました.../tiphat – jes9582

0

AutoGenerateColumnsが私のxamlにFalseに設定されていました。 Trueに設定するとこれが修正されました。

関連する問題