2011-04-06 2 views
2

DataGrid을 마스터로 사용하고 각 행 필드의 세부 정보를 표시하는 TextBlock 또는 TextBox 구성 요소를 구현해야합니다. 내가 DataForm 구성 요소에 대해 알고 있음에도 불구하고 현재 데이터에 대해 CRUD 작업을 지원할 권한이 없다는 점을 확신 할 수는 없습니다. Silverlight Toolkit DataGrid 셀 값을 TextBlock 또는 TextBox 텍스트 속성에 바인딩하는 방법

그래서이 문제는 다른 행이 선택 될 때 (예컨대 TextBlock)가 그 값을 갖는 임의의 주어진 uptated 제어의 특정 속성 TextDataGridTextColumn를 바인딩하는 방법을 기본적.

XAML 코드는 다음과 같을 것이다 :

<!-- Master --> 

<sdk:DataGrid x:Name="FoobarDataGrid" DataContext="foobar" AutoGenerateColumns="False"> 
    <sdk:DataGrid.Columns> 
     <sdk:DataGridTextColumn x:Name="FooDataGridColumn" Header="Foo" Binding="{Binding Foo}" /> 
     <sdk:DataGridTextColumn x:Name="BarDataGridColumn" Header="Bar" Binding="{Binding Bar}" /> 
    </sdk:DataGrid.Columns> 
</sdk:DataGrid> 

<!-- Details --> 

<TextBox x:Name="FooDetailsTextBlock" Text="{Binding <!-- TODO -->}" /> 
<TextBox x:Name="BarDetailsTextBlock" Text="{Binding <!-- TODO -->}" /> 

조언의 모든 비트가 많이 주시면 감사하겠습니다으로 다른 세부 사항을 요구하는 것을 망설이지 말라.

답변

2

편집 : 여기는 코드가 ... 같은

<!-- Master --> 

<sdk:DataGrid x:Name="FoobarDataGrid" DataContext="foobar" AutoGenerateColumns="False"> 
    <sdk:DataGrid.Columns> 
     <sdk:DataGridTextColumn x:Name="FooDataGridColumn" Header="Foo" Binding="{Binding Foo}" /> 
     <sdk:DataGridTextColumn x:Name="BarDataGridColumn" Header="Bar" Binding="{Binding Bar}" /> 
    </sdk:DataGrid.Columns> 
</sdk:DataGrid> 

<!-- Details --> 

<TextBox 
    DataContext="{Binding SelectedItem, ElementName=FoobarDataGrid}" 
    x:Name="FooDetailsTextBlock" 
    Text="{Binding Foo}" /> 

<TextBox 
    DataContext="{Binding SelectedItem, ElementName=FoobarDataGrid}" 
    x:Name="BarDetailsTextBlock" 
    Text="{Binding Bar}" /> 

원래 대답 ... 여기

이 방법을 ... 볼 것 인 것이다

DataGrid

사용자 지정 클래스의 컬렉션에 바인딩됩니다. 이 클래스에는 LabName이라는 속성이 있습니다. 이것은 내가 DataGrid

XAML의 열을 나는 DataGridSelectedItemTextBoxDataContext을 설정하고

<sdk:DataGrid 
     Name="LabsDataGrid" 
     ItemsSource="{Binding}" 
     AutoGenerateColumns="False" 
     Height="284" 
     HorizontalAlignment="Left" 
     Margin="205,250,0,0" 
     VerticalAlignment="Top" 
     Width="359" 
     IsReadOnly="True"> 

     <sdk:DataGrid.Columns> 

      <sdk:DataGridTextColumn 
       Header="Lab Name" 
       Binding="{Binding LabName}" /> 

     </sdk:DataGrid.Columns> 

    </sdk:DataGrid> 


    <TextBox 
     DataContext="{Binding SelectedItem, ElementName=LabsDataGrid}" 
     Name="LabName" 
     Text="{Binding LabName}" 
     Height="23" 
     HorizontalAlignment="Left" 
     Margin="324,121,0,0" 
     VerticalAlignment="Top" 
     Width="132" /> 

공지 사항을 결합하는 것이다. 따라서 사용자가 DataGrid의 행을 클릭하면 TextBoxDataGrid의 열에 바인딩 된 LabName으로 채워집니다.

+0

덕분에 많은 기여를했지만, 매우 흥미로운 방법이었습니다. –

+1

각 요소에 대해 DataContext 속성을 선언하지 않도록 Grid 내에서 래핑 된 TextBox 구성 요소를 약간 수정했습니다. 감사합니다! –

+0

@Nano : 그렇게하기 위해 코드를 편집 할 것입니다. 그 일을 결코 날 알았지. –

관련 문제