【问题标题】:Get the combobox from data template in WPF DataGrid从 WPF DataGrid 中的数据模板获取组合框
【发布时间】:2014-12-03 15:08:55
【问题描述】:

我有一个 WPF 数据网格,带有一个用于组合框的数据模板列

<DataGrid Name="grdTest"  ItemsSource="{Binding Path=TestsList,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}">
<DataGrid.Columns>
   <DataGridTemplateColumn Width="120">
        <DataGridTemplateColumn.Header >
            <TextBlock Text="Test Name" ToolTip="Test Name" Width="109"/>
        </DataGridTemplateColumn.Header>
        <DataGridTemplateColumn.CellTemplate>
            <DataTemplate>
                <ComboBox  Name="cbxTest" 
        SelectedValue="{Binding TestID,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"
        DisplayMemberPath="Test" SelectedValuePath="TestID" SelectionChanged="cbxTest_SelectionChanged_1"
        ItemsSource ="{Binding Path=TestList}">
                </ComboBox>
            </DataTemplate>
        </DataGridTemplateColumn.CellTemplate>
    </DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>

我正在尝试在数据网格的 CellEditEnding 事件中获取组合框元素,如下所示:

 FrameworkElement elmtTest = grdTest.Columns[7].GetCellContent(e.Row);
 ContentPresenter myContentPresenter = FindVisualChild<ContentPresenter>(elmtTest);
 DataTemplate myDataTemplate = myContentPresenter.ContentTemplate;
 ComboBox myComboBox = (ComboBox)myDataTemplate.FindName("cbxTest", myContentPresenter);

elmtTest 的类型为 System.Windows.Controls.ContentPresenter。 但是内容模板给出了null。如何获取数据网格列的组合框元素?

【问题讨论】:

    标签: c# wpf datagrid combobox


    【解决方案1】:

    我让它工作了。从我的角度来看,这是一个愚蠢的错误。我必须将组合框传递给 FindVisualChild。

    FrameworkElement elmtTest = grdTest.Columns[7].GetCellContent(e.Row);
    ComboBox myComboBox = FindVisualChild<ComboBox>(elmtTest);
    

    【讨论】:

    • 我正在尝试相同的方法,但我得到“FindVisualChild”在当前上下文中不存在。“我该怎么办?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-05
    • 1970-01-01
    • 2014-07-14
    • 1970-01-01
    • 2020-10-27
    • 1970-01-01
    相关资源
    最近更新 更多