【发布时间】:2016-07-29 23:21:57
【问题描述】:
我有一个包含用户控件的 C# WPF 应用程序:
<UserControl
x:Name="payrollEntryControl"
x:Class="MyNamespace.PayrollEntryControl"
[...]
>
[...]
</UserControl>
在用户控件中,我有一个 Telerik RadDataForm:
<telerik:RadDataForm
x:Name="payrollAddForm"
CurrentItem="[...]"
EditTemplate="{StaticResource myEditTemplate}"
/>
模板包含 Telerik RadGridView 和 Button:
<telerik:RadGridView Grid.Row="0" Grid.Column="0"
x:Name="workGridView"
[...]
ItemsSource="{Binding [...]}"
>
<telerik:RadGridView.Columns>
[...]
</telerik:RadGridView.Columns>
</telerik:RadGridView>
<Button Grid.Row="1" Grid.Column="0"
Command="{Binding addWorkCommand, ElementName=payrollEntryControl}"
>
Add
</Button>
我想要的命令是在workGridView 上调用BeginInsert()。但我似乎无法访问workGridView。
到目前为止,我的命令:
private DelegateCommand addWorkCommand_ = null;
public DelegateCommand addWorkCommand
{
get
{
if (this.addWorkCommand_ == null)
{
this.addWorkCommand_ = new DelegateCommand(
o => addWork(o)
);
}
return this.addWorkCommand_;
}
}
private void addWork(object o)
{
var addForm = this.payrollAddForm;
var editTemplate = addForm.EditTemplate;
var workGrid = editTemplate.FindName("workGridView", addForm);
}
我的问题?当我拨打editTemplate.FindName() 时,我得到一个例外:
此操作仅对应用了此模板的元素有效。
我不明白。我正在从表单中获取模板。怎么可能不适用?
【问题讨论】:
-
这个问题似乎对 Telerik 库非常具体。您可能需要专门从熟悉该供应商产品的人那里获得帮助。除此之外,如果没有良好的minimal reproducible example,任何人都可能难以直接诊断问题。请说明您在调试和研究错误消息方面已经尝试过什么(包括返回的项目的相关性here)。