Silverlight 5 - 如何在 XAML 中使用普通 CLR 对象作为 CommandParameter?

标签 silverlight xaml parameters command clr

我想知道是否可以在 XAML 中使用简单的 C# CLR 对象作为命令参数,就像我使用 MarkupExtensions 所做的那样。

例如,我使用自己的标记扩展,如下所示:

public class FormOpenExtension : MarkupExtension
    {
        public eForm e { get; set; }

        public override object ProvideValue(IServiceProvider serviceProvider)
        {
            return this;
        }
    }

XAML 中 MarkupExtension 的使用如下所示:

CommandParameter="{gui:FormOpen e=Login}

在XAML中,我对FormOpenExtension Object有完整的智能感知支持,编译没有问题。所以这就像一个魅力。

----------------------------------------------------

现在我有一个简单的 CLR 对象,例如如下所示:

namespace DB
{
    [DataContract(IsReference = true)]
    public partial class User
    {
        #region Primitive Properties

        [Key][DataMember]
        public virtual int ID
        {
            get;
            set;
        }

        [DataMember]
        public virtual string Name
        {
            get;
            set;
        }
}
}

我可以将命名空间导入到 XAML 中并使用该对象,包括如下所示的智能感知:

CommandParameter="{db:User ID=1, Name=Foo}

Visual Studio 说,我像 MarkupExtension 一样使用 User 对象,但它不是。

我完全理解这个问题。普通的用户对象不是扩展。

我不明白的是如何使用用户对象作为命令参数,而不编写我自己的扩展。

这是我的 2 个具体问题:

1.) 是否可以在 XAML 中使用我自己的对象,而不将它们包装到扩展中?

2.) 如果是,命令参数的正确语法是什么?

谢谢。

----------------------------------

好的,谢谢迪米特里。这是解决方案,它现在对我有用:

第1步)导入命名空间

xmlns:db="clr-namespace:DB"

步骤 2) 使用 CLR 对象作为静态资源。

<UserControl.Resources>
   <db:User x:Key="User"/>
</UserControl.Resources>

第 3 步)将对象 key (在本例中为用户)传递给 CommandParameter

CommandParameter="{StaticResource User}

第 4 步)将用户对象绑定(bind)到 UserConrol 中所需的控件

Text="{Binding Source={StaticResource User}, Path=EMail, Mode=TwoWay}"

就是这样。

最佳答案

如果我理解问题,ObjectDataProvider可以帮助找到解决方案。

附:简单地将对象声明为资源,然后通过 StaticResource 扩展使用它怎么样?

<Resources>
     <DB:User Id="1" Name="Name" x:Key="User"/>
</Resources>

关于Silverlight 5 - 如何在 XAML 中使用普通 CLR 对象作为 CommandParameter?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13259302/

相关文章:

c# - 单击控件外部时如何关闭 Silverlight 中的弹出窗口?

c# - 如何在 DataGrid 和 CollectionViewSource 之间同步排序标记?

java - 将参数从 java 程序传递到 bash 脚本,该脚本使用参数调用另一个 java 程序

c# - 在 DataGrid 中突出显示 SelectedItem 的行

c# - .NET ParameterizedThreadStart 错误的返回类型

c++ - 如何设置依赖于其他参数的参数默认值?

.net - DisplayMemberPath 等属性成为依赖属性的原因/场景是什么?

c# - ServiceReferences.ClientConfig 中的动态端点

c# - 基于 XAML 的关卡编辑器

c# - Windows Phone 8.1 XAML 字符串格式