silverlight   发布时间:2022-05-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了在WPF/Silverlight页面中设置自定义属性大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

这听起来应该很简单。我有一个在XAML中以正常方式声明的页面(即“添加新项目…”),它有一个自定义属性。我想在与页面相关联的XAML中设置该属性。 尝试这样做的方式,我设置任何其他属性不工作,因为我理解,但不知道如何工作的方式。所以我们有一些具体的讨论,这里有一些(无效)XAML。我已经减少了一切尽可能多的 – 原来有属性,如设计师的大小,但我相信那些是与我想要做的无关。 <Page x:Clas
这听起来应该很简单。我有一个在XAML中以正常方式声明的页面(即“添加新项目…”),它有一个自定义属性。我想在与页面相关联的XAML中设置该属性

尝试这样做的方式,我设置任何其他属性不工作,因为我理解,但不知道如何工作的方式。所以我们有一些具体的讨论,这里有一些(无效)XAML。我已经减少了一切尽可能多的 – 原来有属性,如设计师的大小,但我相信那些是与我想要做的无关。

<Page x:Class="WpfSandBox.TestPage"
      xmlns="http://scheR_832_11845@as.microsoft.com/winfx/2006/xaml/presentation"
      xmlns:x="http://scheR_832_11845@as.microsoft.com/winfx/2006/xaml"
      MyProperty="MyPropertyValue">
</Page>

相应的代码隐藏:

using System.Windows.Controls;

namespace WpfSandBox {
  public partial class TestPage : Page {
    public TestPage() {
      InitializeComponent();
    }

    public String MyProperty { get; set; }
  }
}

错误信息:

现在我知道为什么这是失败:元素是类型的页面,并且页面没有属性名为MyProperty。这只是在TestPage …中声明的,它是由x:Class属性指定的,而不是由元素本身指定的。据我所知,这种配置是XAML处理模型(即Visual studio集成等)所必需的。

我怀疑我可以处理这个与依赖属性,但感觉有点像过度。我也可以使用现有的属性(例如DataContext),然后将该值复制到代码中的自定义属性中,但这将是非常丑陋。

上面是一个WPF示例,但我怀疑相同的答案将适用于Silverlight。我对这两个感兴趣 – 所以如果你发布一个答案,你知道将工作在一个,但不是其他,我将不胜感激,如果你在答案内指出:

我准备踢自己,当有人发布一个绝对琐碎的解决方案…

解决方法

如果为您的页面创建了Base类,则可以使用Normal属性而不使用Dependency属性

public class BaseWindow : Window
 {
   public String MyProperty { get; set; }
 }

<local:BaseWindow x:Class="BaseWindowSample.Window1" x:Name="winImp"
    xmlns="http://scheR_832_11845@as.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://scheR_832_11845@as.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:BaseWindowSample" 
    MyProperty="myproperty value"
    title="Window1" Height="300" Width="300">

</local:BaseWindow>

并且它工作,即使MyProperty不是依赖或附加。

大佬总结

以上是大佬教程为你收集整理的在WPF/Silverlight页面中设置自定义属性全部内容,希望文章能够帮你解决在WPF/Silverlight页面中设置自定义属性所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。