【问题标题】:Silverlight 4 Equivalent to WPF "x:static"Silverlight 4 等效于 WPF“x:static”
【发布时间】:2011-03-23 09:10:30
【问题描述】:

我正在开发一个基于某人开始但尚未完成的旧项目的项目。我试图尽可能多地使用他们的代码,所以在这样做时我遇到了一些调整问题。

也就是说,当我将一些旧的 xaml 放入新项目时,出现了一些关于“x:static”属性和“动态属性”的错误。

以下是错误消息本身:

错误 1:“DynamicResource”类型不是 成立。确认您没有失踪 一个程序集参考,所有 已构建引用的程序集。

错误 2:未找到类型“x:Static”。 确认您没有遗漏 装配参考和所有 已构建引用的程序集。

我认为导致错误的一些值得注意的点:旧项目是在 VS2008、WPF、v3.5 .Net 框架中编程的;而我在 VS2010、Silverlight 4、.Net framework v4.0 中编程。

我意识到就 xaml 而言,从 WPF 到 Silverlight 存在差异,并且与不同的 .Net 框架版本和 Visual Studio 版本存在很多差异。但是我似乎无法在任何地方找到解决此问题的方法,所以我不知道是否只是缺少一个库,或者只是我只是忽略了一些东西。

如果需要,我可以重新创建它,但就像我说的,我宁愿尽可能多地使用旧代码,只要调整不会造成比其价值更多的麻烦。

【问题讨论】:

    标签: wpf silverlight visual-studio-2010 silverlight-4.0 c#-4.0


    【解决方案1】:

    很遗憾,您不能在 Silverlight 的 XAML 子集中直接使用 DynamicResourceStatic 关键字,但您可以模仿它们的行为。这是有关该主题的文章:

    一般来说,将项目从 WPF 迁移到 Silverlight 并不容易。它们有很多共同点,但严格来说是不同的技术。

    【讨论】:

    • 我完全同意不容易将 WPF 项目迁移到 Silverlight。不过,我会试一试。非常感谢!
    • “在 Silverlight 3 中模拟 DynamicResource”链接已失效。
    【解决方案2】:

    实现绑定到静态属性的另一种方式——在代码中绑定。下面是一个例子。

    主要应用类:

    public partial class App : Application
    {
        public static MyViewModel MyViewModel { get; private set; }
    
        // ...
    }
    

    主窗口标记:

    <TextBlock Loaded="MyTextBlockLoaded" />
    

    主窗口后台代码:

    public partial class MainPage : PhoneApplicationPage
    {
        // ...
    
        private void MyTextBlockLoaded(object sender, RoutedEventArgs e)
        {
            TextBlock textBlock = ((TextBlock)sender);
            if (textBlock.Tag == null)
            {
                textBlock.Tag = true;
                Binding bind = new Binding("MyInfo");
                bind.Source = App.MyViewModel;
                bind.Mode = BindingMode.OneWay;
                textBlock.SetBinding(TextBlock.TextProperty, bind);
            }
        }
    }
    

    也许TextBlock.Tag 检查方法是否已经设置了绑定,这不是最优雅的方法,但它可以工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-03-16
      • 2011-08-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-27
      • 1970-01-01
      相关资源
      最近更新 更多