2

我有一个带有 ViewModel 类作为 DataContext 的 UserControl:

XAML

<UserControl ... >    
    <TextBox Text="{Binding ViewModelProperty}"/>
</UserControl>

代码隐藏:

namespace DotfuscatorTest.UserControl.View
{
   using ViewModel;
   public partial class UserControlView
   {
      public UserControlView()
      {
         InitializeComponent();
         DataContext = new UserControlViewModel();         
      }
   }
}

视图模型类:

namespace DotfuscatorTest.UserControl.ViewModel
{
   internal class UserControlViewModel
   {
      private string viewModelProperty = "hello world";

      public string ViewModelProperty
      {
        get { return viewModelProperty; }
        set { viewModelProperty = value; }
      }
   }
}

此示例运行良好(数据绑定工作正常)。但是现在,当我使用 Dotfuscator(版本 4.9.7750)混淆这个程序集时,绑定不起作用。如果我将 UserControlViewModel 类公开,则应用程序在混淆后也可以正常运行。

据我了解,Dotfuscator 在公开时不会更改属性的名称,但如果是私有类或内部类,则会更改它。

我现在的问题是,你如何处理这个问题。我认为在 DataBindings 中使用具有属性的内部类很常见,不是吗?或者有没有办法配置Dotfuscator?

提前致谢, rhe1980

4

1 回答 1

2

默认情况下,Dotfuscator 执行属性名称混淆(重命名),这会破坏 XAML 绑定。它将尝试通过重命名 XAML 中的绑定目标来纠正此问题,但并不总是成功,就像在这种情况下一样。在不更改代码的情况下更正此问题的最简单方法是在 Dotfuscator 中添加重命名排除项。您应该能够查看“重命名”选项卡并从重命名中排除有问题的 ViewModel。

于 2012-08-17T22:59:45.847 回答