Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 向Silverlight控件添加自定义属性_.net_Silverlight_Xaml - Fatal编程技术网

.net 向Silverlight控件添加自定义属性

.net 向Silverlight控件添加自定义属性,.net,silverlight,xaml,.net,Silverlight,Xaml,将自己的属性添加到现有Silverlight控件的最佳方式是什么?例如,我想将一个自定义类与DataGrid关联,并能够在Expression Blend中设置该自定义类的属性 这是一件容易做的事吗 谢谢 AJ通过继承,这很容易做到 例如,这里有一个datagrid,它在输入击键时触发验证事件 namespace SLCommon { public delegate void VaditateSelectionEventHandler(object sender, EventArgs e

将自己的属性添加到现有Silverlight控件的最佳方式是什么?例如,我想将一个自定义类与DataGrid关联,并能够在Expression Blend中设置该自定义类的属性

这是一件容易做的事吗

谢谢


AJ

通过继承,这很容易做到

例如,这里有一个datagrid,它在输入击键时触发验证事件

namespace SLCommon
{
    public delegate void VaditateSelectionEventHandler(object sender, EventArgs e);

    /// <summary>
    /// Fires a validate event whenever the enter key or the left mouse button is pressed
    /// </summary>
    public class EventDatagrid : DataGrid
    {
        public event VaditateSelectionEventHandler Validate;

        public EventDatagrid()
            : base()
        {
            this.MouseLeftButtonUp += new MouseButtonEventHandler(OnMouseLeftButtonUp);
        }

        protected override void OnKeyDown(KeyEventArgs e)
        {
            if (e.Key != Key.Enter)
                base.OnKeyDown(e);
            else
            {
                e.Handled = true;
                Validate(this, e);
            }
        }

        protected void OnMouseLeftButtonUp(object sender, MouseButtonEventArgs e)
        {
           Validate(this, e);
        }
    }
}
名称空间SLCommon
{
公共委托void VaditateSelectionEventHandler(对象发送者,事件参数e);
/// 
///每当按下enter键或鼠标左键时激发验证事件
/// 
公共类EventDatagrid:DataGrid
{
公共事件VaditateSelectionEventHandler验证;
publicEventDataGrid()
:base()
{
this.MouseLeftButtonUp+=新的MouseButtonEventHandler(OnMouseLeftButtonUp);
}
受保护的覆盖无效OnKeyDown(KeyEventArgs e)
{
如果(e.Key!=Key.Enter)
base.OnKeyDown(e);
其他的
{
e、 已处理=正确;
验证(此,e);
}
}
MouseLeftButtonUp上的受保护无效(对象发送器、MouseButtonEventArgs e)
{
验证(此,e);
}
}
}
XAML侧:

<slc:EventDatagrid x:Name="toto" Validate="toto_Validate" 
                           AutoGenerateColumns="True"  IsReadOnly="True" Width="auto" MaxHeight="300">
</slc:EventDatagrid>

注意验证事件处理程序

在这里,您可以在xaml文件中添加控件myobj(请确保在页面顶部声明正确的
xmlns:
命名空间)并设置其属性


我不知道blend,但它确实以同样的方式工作。

另一个选项是使用附加的行为/属性。 这是继承/组合参数-要扩展类X的功能,您是从类X继承并扩展它,还是创建包含类X的类Y

下面是某人通过附加行为将像素捕捉添加到SL的示例:

您好,您真的这样做了吗?我的印象是,子类Silverlight控件在运行时无法初始化。是的,我已经这样做过很多次了。你想要一个活生生的例子吗?它很有效,非常感谢。但如果你在谷歌上搜索,就会发现各种各样的问题。早期版本的SL不具备这种功能吗?事实上,处理Silverlight 3是件好事,因为每次搜索都会返回关于SL2 beta版或SL1版中某个bug或缺失功能的结果。。。