如何将Silverlight Toolkit DataGrid单元格值绑定到TextBlock或TextBox文本属性

本文关键字:TextBlock TextBox 属性 文本 绑定 Silverlight Toolkit 单元格 DataGrid | 更新日期: 2023-09-27 17:48:56

我需要实现一个主/细节View,有一个DataGrid作为主,很可能TextBlockTextBox组件显示每个行字段的详细信息-尽管我知道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 -->}" />

不要犹豫,询问任何其他细节,因为每一点建议都会非常感激。

如何将Silverlight Toolkit DataGrid单元格值绑定到TextBlock或TextBox文本属性

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" />

注意我将TextBoxDataContext设置为DataGridSelectedItem。因此,当用户单击DataGrid中的一行时,TextBox将使用绑定到DataGrid中的列的LabName填充。