将自己的属性添加到现有Silverlight控件的最佳方法是什么?例如,我想将自定义类与DataGrid关联,并能够在Expression Blend中设置此自定义类的属性吗?
这是一件容易的事吗?
谢谢,
AJ
答案 0 :(得分:1)
通过继承,这很容易做到。
这是一个数据网格,它在输入击键时触发验证事件。
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);
}
}
}
XAML方:
<slc:EventDatagrid x:Name="toto" Validate="toto_Validate"
AutoGenerateColumns="True" IsReadOnly="True" Width="auto" MaxHeight="300">
</slc:EventDatagrid>
请注意Validate事件处理程序。
此后,您可以在xaml文件中添加控件myobj(确保在页面顶部声明正确的xmlns:
命名空间)并设置它的属性。
不知道混合,但它确实以相同的方式工作。
答案 1 :(得分:1)
另一种选择是使用附加的行为/属性。 它是继承/组合参数 - 扩展类X的功能,是从类X继承并扩展它,还是创建包含类X的类Y?
以下是有人通过附加行为将PixelSnapping添加到SL的示例: http://blogs.msdn.com/devdave/archive/2008/06/22/Using-an-Attached-DependencyProperty-to-Implement-Pixel-Snapping-as-an-Attached-Behavior.aspx