向XAML元素添加x:Name属性通常会导致成员变量被添加到支持类,然后可以使用普通代码进行访问。当有问题的元素是DataTemplate的一部分时,该字段不会被创建。
我可以理解DataTemplate是一个特例,但任何人都可以向我解释基本原理吗?在.NET代码中访问对象有哪些选项?
<dataControls:DataForm x:Name="CompanyDetail" CurrentItem="{Binding CurrentItem}" AutoGenerateFields="False">
<dataControls:DataForm.EditTemplate>
<DataTemplate>
<StackPanel dataControls:DataField.IsFieldGroup="True">
<dataControls:DataField Label="About">
<Border Height="150" Style="{StaticResource HtmlPlaceHolderBorderStyle}" Width="298" VerticalAlignment="Top">
<telerik:RadHtmlPlaceholder x:Name="uxAboutHtml" x:FieldModifier="Public" HtmlSource="{Binding About, Mode=TwoWay}"/>
</Border>
</dataControls:DataField>
</StackPanel>
</DataTemplate>
</dataControls:DataForm.EditTemplate>
</dataControls:DataForm>
答案 0 :(得分:0)
您可以在DataTemplate的父级上使用FrameworkElement.FindName("objectName")方法,例如var uxAboutHtml = CompanyDetail.FindName("uxAboutHtml");
获取对象的引用。这样做的缺点是,传递给FindName的参数不会以XAML x:Name“objectName”属性强类型化。
我已经改变了这一点,现在我正在引用控件绑定的底层对象,这可能是一个更好的方法。
var htmlContent = (CompanyViewModel)CompanyDetail.CurrentItem;