如何将Silverlight Toolkit DataGrid单元格值绑定到TextBlock或TextBox文本属性
本文关键字:TextBlock TextBox 属性 文本 绑定 Silverlight Toolkit 单元格 DataGrid | 更新日期: 2023-09-27 17:48:56
我需要实现一个主/细节View
,有一个DataGrid
作为主,很可能TextBlock
或TextBox
组件显示每个行字段的详细信息-尽管我知道DataForm
组件,我不完全确定这将是解决方案,因为目前我没有被要求支持该数据上的CRUD操作。
所以问题基本上是如何将每个DataGridTextColumn
绑定到任何给定控件(例如TextBlock
)的特定Text
属性,当选择不同的行时更新其值。
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 -->}" />
不要犹豫,询问任何其他细节,因为每一点建议都会非常感激。
edit:这是你的代码看起来像…
<!-- 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" />
注意我将TextBox
的DataContext
设置为DataGrid
的SelectedItem
。因此,当用户单击DataGrid
中的一行时,TextBox
将使用绑定到DataGrid
中的列的LabName
填充。