C# XAML中的公共静态控制

C# XAML中的公共静态控制,c#,wpf,xaml,C#,Wpf,Xaml,有人知道我如何在XAML中创建一个公共静态RichTextBox?如果我用代码声明它很容易: public static RichTextBox r; 但是在XAML中呢?看起来这应该是可能的,但我无法用: <RichTextBox x:Name="convBox" Margin="29.333,26,39.333,95" VerticalScrollBarVisibility="Visible"> 是否可以从XAML将其公开和静态 谢谢 不,这应该是不可

有人知道我如何在XAML中创建一个
公共静态RichTextBox
?如果我用代码声明它很容易:

      public static RichTextBox r;
但是在XAML中呢?看起来这应该是可能的,但我无法用:

    <RichTextBox x:Name="convBox" Margin="29.333,26,39.333,95" VerticalScrollBarVisibility="Visible">

是否可以从XAML将其公开和静态


谢谢

不,这应该是不可能的,因为它将在该控件/窗口/etc的所有实例中共享,这不能用一个实例来完成,因为它将有多个父实例。

这是不可能的。唯一的选项是
FieldModifier
,它可以使控件公开,而不是静态

<RichTextBox x:Name="convBox" x:FieldModifier="public" Margin="29.333,26,39.333,95" VerticalScrollBarVisibility="Visible" />


您可以在App.xaml中将其定义为资源。静态变量实际上只是全局变量,App.xaml中定义的资源实际上也是全局变量。当然有各种不同。我不确定使用富文本框会实现什么效果,但确实以一种方式回答了您的问题。

正如@MikeKulls的回答所解释的,这是可能的。以下是实际实现:

App.xaml:

<Application.Resources>
    <RichTextBox x:Key="convBox" Margin="29.333,26,39.333,95" VerticalScrollBarVisibility="Visible"/>
</Application.Resources>

ViewUsingStaticControl.xaml

<Grid>
    <ContentControl Content="{StaticResource convBox}"/>
</Grid>

重要提示:
正如@H.B.的回答中提到的,元素只能有一个父元素。以这种方式使用静态控件的结果是,如果静态控件当前显示在一个视图中,然后显示包含该静态控件的不同视图,则静态控件将从第一个视图中删除,并添加到最近加载的视图中

我认为这是不可能的。如何在我基于WinForm的应用程序中添加App.xaml文件,我所能做的就是添加与UserControl相关的xaml。