从指定的DataGridRow中找到DataGrid中的ComboBox

时间:2013-08-01 21:35:56

标签: c# wpf datagrid combobox children

我正在尝试在DataGrid中的DataTemplate中找到一个ComboBox。

首先,我尝试一下:

VisualTreeHelper.GetChildrenCount(dataGridRowInstance);

但它总是返回0.

XAML:

                <DataGrid HorizontalAlignment="Left" Margin="10,54,0,0" VerticalAlignment="Top" Height="231" Width="571" ItemsSource="{Binding}" AutoGenerateColumns="false" x:Name="gridRestore" CellStyle="{StaticResource CellVerticalAlignCenter}">
                    <DataGrid.Columns>
                        <DataGridTextColumn Header="Created Date" Binding="{Binding Path=CreationTime, ConverterCulture=pt-BR}" Width="120"/>
                        <DataGridTextColumn Header="Length" Binding="{Binding Path=Length}" Width="120"/>
                        <DataGridTextColumn Header="Name" Binding="{Binding Path=Name}" Width="200"/>
                        <DataGridTemplateColumn Width="*" Header="Restore To...">
                            <DataGridTemplateColumn.CellTemplate>
                                <DataTemplate>
                                    <ComboBox Name="cbx"  Width="120" DropDownOpened="Cbx_OnDropDownOpened" SelectionChanged="Cbx_OnSelectionChanged"></ComboBox>
                                </DataTemplate>
                            </DataGridTemplateColumn.CellTemplate>
                        </DataGridTemplateColumn>
                    </DataGrid.Columns>
                </DataGrid>

在简历中,我想根据我在DataGrid.LoadingRow事件中的测试结果隐藏ComboBox。

1 个答案:

答案 0 :(得分:0)

找到放置在DataTemplate中的元素并不容易。你可以在这里找到一个例子http://msdn.microsoft.com/en-us/library/bb613579.aspx

假设您正在使用MVVM模式并且在DataGrid中每行创建一个VM,我建议您向VM添加一个新属性并将组合框可见性绑定到它。