jef*_*ora 1 c# wpf contentpresenter uielement
是否有任何情况下a的内容ContentPresenter将是某个对象而不是UIElement?鉴于该字段被声明为对象而不是a UIElement,似乎可能存在.但是,我想不出它会出现的任何情况,或者即使它是有效的.
ContentPresenter presenter = GetTemplateChild(PART_Presenter) as ContentPresenter;
UIElement myElement = (UIElement)presenter.Content;
myElement.SomeUIMethod(); // possible InvalidOperationException?
Run Code Online (Sandbox Code Playgroud)
我一直这样做 - 整个MVVM方法都建立在非UIElement内容上,这是一个例子:
创建一个非派生类UIElement,我在这个例子中称之为MyViewModelClass.
创建一个窗口并添加此代码
public partial class Window1 : Window
{
public Window1()
{
DataContext = new MyViewModelClass();
InitializeComponent();
}
}
Run Code Online (Sandbox Code Playgroud)
并向XAML添加一些内容控件:
<Button Content="{Binding}"/>
Run Code Online (Sandbox Code Playgroud)
现在你有一个ContentPresenter(在Button控件模板内),MyViewModelClass作为内容.
另一个(也许是更常见的)示例是ItemControl- ListBox例如,让我们ListBoxItem有一个ContentPresenter具有列表设置中的任何内容ItemsSource.