x:FieldModifier 对 C# 语言无效?

Posted

技术标签:

【中文标题】x:FieldModifier 对 C# 语言无效?【英文标题】:x:FieldModifier is not valid for the language C#? 【发布时间】:2011-02-22 16:07:37 【问题描述】:

当我将 x:FieldModifier 应用于我的 WPF 控件时,例如:

<TextBox x:Name="textBox1" x:FieldModifier="Public"/>

visual studio(在 2008 年和 2010 年尝试过)给我以下错误:

x:FieldModifier 对 语言 C#

我该如何解决这个问题?

编辑:抱歉,我想公开...

【问题讨论】:

可能是个愚蠢的问题,但你有xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 吗? @***Exception,是的,我确实有那行。 使用“公共”而不是“公共”,请参阅下面的答案 【参考方案1】:

使用小写“public”而不是“Public”

<Window x:Class="WpfApplication1.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="350" Width="525">
<Grid>
    <TextBox Name="TEst" x:FieldModifier="public" Text="nothing" />
</Grid>

【讨论】:

谢谢,我们花了半个小时在这上面,不知怎的,我们确实相信我们是从小写的“p”开始的……但现在它可以工作了!非常感谢!【参考方案2】:

你确定你真的需要FieldModifier吗?如果不包含它会怎样?

来自the documentation:

x:FieldModifier 与声明类或其成员的一般访问级别无关。当作为 XAML 产品的一部分的特定 XAML 对象被处理并成为可能在应用程序的对象图中可访问的对象时,它仅与 XAML 处理行为相关。默认情况下,此类对象的字段引用是私有的,这样可以防止控制使用者直接修改对象图。相反,控制使用者应该使用编程模型启用的标准模式来修改对象图,例如通过获取布局根、子元素集合、专用公共属性等。

【讨论】:

以上是关于x:FieldModifier 对 C# 语言无效?的主要内容,如果未能解决你的问题,请参考以下文章

深入浅出-样式属性布局

C# - 值 'dd/mm/yyyy' 对 Value 无效

当阅读器关闭时,C# 尝试调用 Read 无效

C#调用替换后Oracle包无效

在ListView.ItemSource中点按发射命令。

在ListView.ItemSource中点按发射命令。