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

时间:2012-11-05 15:53:58

标签: c# .net wpf resources expression-blend

我现在正在尝试做什么:修改Expression Blend UI / Visual Studio,在我的某个依赖项属性上添加一个按钮,当我点击它时,它会创建一个新触发器。

工作正常:我创建了按钮,它出现在用户界面中,没关系。

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

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

Visual Studio UI

按下按钮时会发生这种情况:

  • 我得到包含该依赖属性的控件(确定)。
  • 我搜索了包含我要修改的资源的资源文件(确定)。
  • 我更新资源,但它不会替换磁盘上的资源。

我认为这是因为我只在内存上修改它,所以它在“空中”

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

我修改资源的代码在另一个DLL中,即MyLibrary。设计 .cs

我正在使用Visual Studio 2010 / Blend 4 / .NET 4.0

1 个答案:

答案 0 :(得分: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>

然后在MainWindow.xaml.cs中,您可以像这样使用ResourceContainer.cs

...
ResourceContainer rc;

...

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

...

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