c# - 作为 XAML 元素的附加属性

标签 c# silverlight xaml windows-phone-7

我有一类附加属性:

public static class XamlProps
{
    #region Attached Properties

    private static readonly DependencyProperty FooProperty = DependencyProperty.RegisterAttached(
        "Foo",
        typeof(string),
        typeof(XamlProps),
        null);

    public static void SetFoo(DependencyObject obj, string action)
    {
        obj.SetValue(FooProperty, action);
    }
}

我在我的 XAML 中使用这些属性:

<Border me:XamlProps.Foo="Foo to the Bar">

但现在我想在这个属性中有一个更大的值,所以我想将它用作一个元素:

<Border>
    <me:XamlProps.Foo>Foo to the Bar</me:XamlProps.Foo>
</Border>

但现在 Silverlight 不再调用 SetFoo()。我如何让它发挥作用?

如果重要,在 Windows Phone 7 上。

最佳答案

如果使用该语法,则需要指定类型:

<Border>
    <me:XamlProps.Foo>
        <sys:String>Foo to the Bar</sys:String>
    </me:XamlProps.Foo>
</Border>

sys 命名空间映射到 System.您还需要定义 GetFoo ...

可能是复制粘贴错字,但在注册中

typeof(XamlActions)

应该是

typeof(XamlProps)

关于c# - 作为 XAML 元素的附加属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5267088/

相关文章:

c# - Xamarin.Forms - 与单击事件中的事件类型错误不匹配

c# - WPF MVVM中加载单选按钮

c# - 如何使用子对象字段作为 NHibernate 中另一个子对象的复合键的一部分

c# - 如果存储库用于聚合根,那么其他实体的数据访问逻辑应该放在哪里?

apache-flex - Silverlight 安装基础 - 它有多大?

silverlight - 电子邮件超链接按钮

c# - Silverlight 中的简单 2D 'Space Invaders' 克隆

wpf - XAML 中 * 的含义是什么

c# - 将 GPS 坐标转换为 3D 模型

xaml - Xamarin Forms:如何为按钮添加填充?