C# XAML中的公共静态控制
有人知道我如何在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将其公开和静态 谢谢 不,这应该是不可
公共静态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。