当我在VS 2010中创建WPF应用程序并在Grid中放置一个按钮时,我可以从C#代码访问该控件。我有一个按钮类实例变量,其名称与XAML“name”字段中的名称相同。 但是当我使用VS 2012 RC创建WPF项目时,我看不到控件的实例。 可能是什么问题? VS 2010和2012之间是否存在默认的项目设置差异?
答案 0 :(得分:4)
如果您正在谈论代码隐藏,那么您应该能够访问按钮,而无需再次使用它x:name
属性再次声明它。现在,如果你在谈论MVVM,那么你应该在使用按钮之前设置你的datacontext。
当我使用2012(Release Candidate)时,在尝试访问xaml中声明的元素时,我得不到代码隐藏cs文件的智能感知(我必须在没有它的情况下编写代码),它甚至建议没有元素名称但项目编译和工作。所以我建议你尝试编写没有intellisense的代码并编译它。
YourButton.IsEnabled = false;
我想在VS 2012中默认这是为了鼓励使用MVVM,但这只不过是想法。
答案 1 :(得分:2)
您需要确保不使用静态方法访问控件。
答案 2 :(得分:0)
我有同样问题的另一种体验。
当我尝试从后面的代码访问元素时,没有智能感知显示它,我无法使用它的方法。所以我尝试调试项目,我发现存在一个逻辑上的问题并且不是语法错误,所以它没有在XAML代码或任何地方显示。我修复它然后我能够从后面的代码访问它。确保正在尝试访问的元素已正确定义,并且具有逻辑上正确的属性。
<ComboBox x:Name="_days" Selected="0" Width="50"/>
这是代码而且Selected属性在逻辑上是不正确的,因为组合框中没有元素,你不能选择第0个元素。