1

ContentPresenterの内容が?以外のオブジェクトになる状況はありUIElementますか?フィールドがではなくオブジェクトとして宣言されていることを考えると、UIElement存在する可能性があるようです。しかし、それが有効であるとしても、それが有効であるとは思えません。

ContentPresenter presenter = GetTemplateChild(PART_Presenter) as ContentPresenter;
UIElement myElement = (UIElement)presenter.Content;
myElement.SomeUIMethod(); // possible InvalidOperationException?
4

2 に答える 2

6

私はいつもそれを行っています - そしてMVVMメソッド全体は非UIElementコンテンツに基づいています。以下に例を示します:

から派生していないクラスを作成しますUIElement。この例では MyViewModelClass を呼び出します。

ウィンドウを作成し、このコードを追加します

public partial class Window1 : Window
{
    public Window1()
    {
        DataContext = new MyViewModelClass();
        InitializeComponent();
    } 
}

そして、コンテンツ コントロールを XAML に追加します。

<Button Content="{Binding}"/>

これContentPresenterで、コンテンツとして MyViewModelClass を含む (ボタン コントロール テンプレート内) ができました。

もう 1 つの (おそらくもっと一般的な) 例は次のItemControlとおりです。ListBoxListBoxItemContentPresenterItemsSource

于 2009-12-01T09:34:10.930 に答える
4

これが私が考えることができる最も基本的な例です

<Label Content="My Label" />

現在、 content プロパティは から派生していない文字列UIElementです。短い答えはイエスです。それは可能であるだけでなく、起こりそうです。

于 2009-12-01T19:22:40.477 に答える