C# 在设计时修改资源,将代码隐藏在WPF项目中

C# 在设计时修改资源,将代码隐藏在WPF项目中,c#,.net,wpf,resources,expression-blend,C#,.net,Wpf,Resources,Expression Blend,我现在要做的是:修改Expression Blend UI/Visual Studio,在我的一个依赖项属性上添加一个按钮,当我单击它时,它会创建一个新触发器 工作原理:我创建了按钮,它出现在UI中,没关系 不起作用的内容:我无法修改资源以添加触发器(如果我介入,它会起作用,但不会修改全局资源,只修改我认为的实例) 我在Visual Studio中有我的主项目,还有一个带有如下按钮的属性: ... ResourceContainer rc; ... MyGrid.Resources.Add(

我现在要做的是:修改Expression Blend UI/Visual Studio,在我的一个依赖项属性上添加一个按钮,当我单击它时,它会创建一个新触发器

工作原理:我创建了按钮,它出现在UI中,没关系

不起作用的内容:我无法修改资源以添加触发器(如果我介入,它会起作用,但不会修改全局资源,只修改我认为的实例)

我在Visual Studio中有我的主项目,还有一个带有如下按钮的属性:

...
ResourceContainer rc;

...

MyGrid.Resources.Add("MyKey", rc.MyButton);

...

(when you need it)
rc.MyButton.Triggers.Add(TriggerBase item);
...

按下按钮时,会发生以下情况:

  • 我得到包含该依赖属性(Ok)的控件
  • 我搜索了包含要修改的资源的资源文件(确定)
  • 我更新了资源,但它不会替换磁盘上的资源
我想这是因为我只在内存中修改它,所以它在“空中”

我不知道现在该去哪里。。。我需要帮助

我修改资源的代码位于另一个DLL中,即MyLibrary。Design.cs


我现在使用的是Visual Studio 2010/Blend 4/.NET 4.0,这是目前我能想到的一个布局,但不幸的是,我现在无法测试它。你仍然可以检查它是否适合你

您可以拥有一个类,比如说
ResourceContainer.cs
,并将控件作为公共静态值收集在其中,并将控件设置为按钮:

   public static Button MyButton;
然后您可以在代码隐藏中使用它: 如果您的窗口是
MainWindow.xaml
,并且,假设您需要网格中的特定控件,那么您可能有如下内容:

<Window x:Class=...
        ...(namespace stuff)...
        Title="MainWindow" ...(size stuff)...>

    <Grid x:Name="MyGrid">
    ...(your code here)...      
    </Grid>
    ...
</Window>

天哪,你是怎么做到的?我需要为VS 2010 EDMX Designer的一个属性执行类似的操作,您可以查看