簡體   English   中英

從WPF DataGrid中的數據模板獲取組合框

[英]Get the combobox from data template in WPF DataGrid

我有一個WPF Datagrid,其中有一個用於組合框的datatemplate列

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

我正在嘗試在datagrid的CellEditEnding事件中獲取combobox元素,如下所示:

 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。 但是內容模板為空。 如何獲取datagrid列的combobox元素?

我知道了。 從我的角度來看這是一個愚蠢的錯誤。 我必須將組合框傳遞給FindVisualChild。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM