如何在没有代码隐藏的情况下在纯XAML中声明/定义变量

时间:2014-05-13 19:48:17

标签: wpf xaml app.xaml

请考虑以下XAML标记(Visual Studio 2010中的App.xaml文件):

<Application x:Class="UpdateTrigger.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:local="clr-namespace:UpdateTrigger"
             xmlns:clr="clr-namespace:System;assembly=mscorlib"
             StartupUri="MainWindow.xaml">
    <Application.Resources>
        <clr:String x:Key="MyString">My string</clr:String>
    </Application.Resources>
</Application>

我可以像在C#程序中的变量一样写入MyString吗?这就是我想要做的:我试图通过纯XAML声明和定义一个变量,没有任何代码隐藏。这可能吗?

澄清编辑:

例如,如果我将MyString绑定到XAML中的TextBox,用户可以键入该TextBox吗?我试过了,但还是没能做到。

1 个答案:

答案 0 :(得分:2)

是否可以绑定和修改资源对象?是的,不是。您可以这样做,但对象需要是可变的,因此不能是Int32BooleanString这样的值类型,它是不可变的引用类型。该对象还需要具有一些被修改的属性(Path的{​​{1}}) - 您无法替换整个对象本身。

如果你这样做,可能更重要的问题。答案通常是否定的,但有时可能会有用,例如,直接在View XAML中声明ViewModel实例以提供简单的设计器支持。通常,绑定到代码中的对象几乎总是更好,这样他们就可以轻松地与程序的其他部分进行交互,而无需依赖运行时资源查找。如果您有数据停留在视图中,例如Binding仅反映了TextBlock的价值,那么通常最好将它们与{TextBox直接绑定在一起{1}} ElementName而不是添加额外的中间人。