将绑定创建时已知的值传递给处理程序

时间:2014-01-17 23:02:43

标签: .net wpf binding event-handling

在绑定时知道一个Int32值sDocBaseResultDocsFieldsIndex 我需要将该值传递给事件处理程序(cc_CopyToClip)
我怎样才能传递这个值?
我真的没有使用ConverterParameter - 只是希望找到一种方法来访问事件处理程序

Binding gvBinding = new Binding();
gvBinding.ConverterParameter = sDocBaseResultDocsFieldsIndex;
FrameworkElementFactory textblock = new FrameworkElementFactory(typeof(TextBlock));
textblock.SetValue(TextBlock.TextProperty, gvBinding);
textblock.AddHandler(TextBlock.MouseRightButtonDownEvent, new MouseButtonEventHandler(cc_CopyToClip));

背景: 看到硬编码4
那是我需要传递的值(sDocBaseResultDocsFieldsIndex)

private void cc_CopyToClip(object sender, MouseButtonEventArgs e)
{
    if (sender is TextBlock)
    {
        TextBlock tb = (TextBlock)sender;
        GabeLib.sDocBase sdB = (GabeLib.sDocBase)tb.DataContext;
        if (sdB != null && sdB.DocFields != null && sdB.DocFields[4] != null)
        {
            MessageBox.Show(sdB.DocFields[4].DispValue);
        }

1 个答案:

答案 0 :(得分:1)

要在任何FrameworkElement中保留其他值,您可以使用Tag属性。在创建TextBlock

时设置它
textblock.SetValue(FrameworkElement.TagProperty, 4)

如果您可以阅读

(int)tb.Tag