我需要实现一个主/详细信息View
,将DataGrid
作为主要内容,很可能TextBlock
或TextBox
组件显示每个行字段的详细信息 - 尽管我已经了解DataForm
组件,但我并不确定这是解决方案,因为目前我还没有回应支持CRUD对该数据的操作。
所以问题基本上是如何将每个DataGridTextColumn
绑定到任何给定控件的特定Text
属性(例如TextBlock
),当选择不同的行时,其值会被提升。< / p>
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 -->}" />
不要犹豫,要求任何其他细节,因为我会非常感谢您的建议。
答案 0 :(得分: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
<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" />
请注意,我将DataContext
的{{1}}设置为TextBox
的{{1}}。因此,当用户点击SelectedItem
中的一行时,DataGrid
会填充DataGrid
中绑定到TextBox
列的LabName
。