XAML中的公共静态控件

时间:2012-07-05 00:12:04

标签: c# wpf xaml

有没有人知道如何在XAML中创建public static RichTextBox?如果我在代码中声明它很容易:

      public static RichTextBox r;

但是XAML怎么样?似乎它应该是可能的,但我无法做到:

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

是否可以从XAML公开和静态?

谢谢!

4 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

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

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

答案 2 :(得分:1)

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

答案 3 :(得分:1)

这是可能的,正如@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.的回答中提到的,元素只能有一个父元素。以这种方式使用静态控件的结果是,如果静态控件当前正在一个视图中显示,然后显示包含静态控件的不同视图,则静态控件将从第一个视图中删除并添加到加载了最近的视图。