首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从DataGridCell获取控件

从DataGridCell获取控件
EN

Stack Overflow用户
提问于 2011-05-23 22:19:59
回答 2查看 8.9K关注 0票数 9

假设我在DataGridTemplateColumn中有一个任意控件,我希望知道如何获取该控件,因为我已经检索到了包含该控件的DataGridCell。

我的包含DataGrid的XAML文件如下:

代码语言:javascript
复制
    <DataGrid Name="dgMovement">
...    
    <DataGridTemplateColumn Header="Target %">
       <DataGridTemplateColumn.CellTemplate>
          <DataTemplate>
            <vi:PercentageEditor Value="{Binding TargetPercentage, Mode=TwoWay,
                      UpdateSourceTrigger=PropertyChanged}" Width="100px"  
                      cal:Message.Attach="[Event PreviewLostKeyboardFocus] = [Action ChangeTargetPercentage];[Event PreviewGotKeyboardFocus] = [Action OnFocus]" 
                      Name="aa" />
          </DataTemplate>
       </DataGridTemplateColumn.CellTemplate>
    </DataGridTemplateColumn>...

我使用扩展方法检索DataGridCell,如下所示:

代码语言:javascript
复制
DataGridCell cell = view.dgMovement2.GetCell(index, 6);

静态类中包含的扩展方法可以在here中找到

问题是,一旦我获得了DataGridCell,我如何检索"PercentageEditor“?有人能帮我吗?任何帮助都将不胜感激。谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-05-24 00:22:51

您可以使用控件的名称在模板中查找它,例如

代码语言:javascript
复制
<DataGridTemplateColumn>
    <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <uc:Bogus x:Name="root" ItemsSource="{Binding Machines}"/>
        </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
代码语言:javascript
复制
var cell = dataGrid.GetCell(5, 0);
var cp = (ContentPresenter)cell.Content;
var bogus = (Bogus)cp.ContentTemplate.FindName("root", cp);

但是请注意,这通常不是必需的,因为修改模板化控件大部分都可以使用数据绑定、附加的属性和事件来完成。通常,我会将通过代码访问模板限制为自定义控件(通常具有designated parts)。

票数 15
EN

Stack Overflow用户

发布于 2020-01-28 06:03:01

这对我很有效(C#)

代码语言:javascript
复制
        DataGridRow row = (DataGridRow)dgContacts.ItemContainerGenerator.ContainerFromItem(item);
            var cell = dgContacts.Columns[0];

            var cp = (ContentPresenter)cell.GetCellContent(row);
            CheckBox rowSelected = (CheckBox)cp.ContentTemplate.FindName("Edit", cp);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6098475

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档