3

有谁知道我如何public static RichTextBox在 XAML 中创建,比如说,a?如果我在代码中声明它很容易:

      public static RichTextBox r;

但是在 XAML 中呢?似乎应该是可能的,但我无法做到:

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

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

谢谢!

4

4 回答 4

3

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

应用程序.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>

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

于 2015-11-18T17:41:04.563 回答
2

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

于 2012-07-05T00:15:17.533 回答
2

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

于 2012-07-05T03:55:02.227 回答
1

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

<RichTextBox x:Name="convBox" x:FieldModifier="public" Margin="29.333,26,39.333,95" VerticalScrollBarVisibility="Visible" />
于 2012-07-05T00:25:59.577 回答