繁体   English   中英

如何在后面的代码中为同样在后面的代码中创建的文本块在后面的代码中创建数据绑定?

[英]How to create databinding in code behind for a textblock that is created also in code behind?

我有以下代码:

private void Ok_Click(object sender, MouseButtonEventArgs e)
{
    MainWindow win = (MainWindow)Application.Current.MainWindow;
    int i = 1;  // counter for the name of each new textblock
    string name = String.Concat("sample", i);

    // add textblok to the document list of new samples

    if (File_name.Text != "")
    {
        TextBlock sampleText = new TextBlock();


        sampleText.Text = File_name.Text;
        sampleText.FontSize = 14;
        sampleText.FontFamily = new FontFamily("Sans-serif");
        sampleText.FontWeight = FontWeights.DemiBold;
        sampleText.Margin = new Thickness(20,0,0,0);
        sampleText.Name = name;
        sampleText.PreviewMouseDown += new MouseButtonEventHandler(test1);
        sampleText.Visibility = System.Windows.Visibility.Collapsed;

        //binding 

        Binding myBinding = new Binding();
        myBinding.Source = Application.Current;
        myBinding.Path = new PropertyPath("sampleName");
        myBinding.Mode = BindingMode.TwoWay;
        myBinding.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged;
        sampleText.SetBinding(, myBinding);


        Grid.SetColumn(sampleText, 0);

        win.sp_s.Children.Add(sampleText);

        // checking if the drop down of sample is already open,
        //if so it will show the last textblock with pressing the arrow button.
        var TextBlock = win.sp_s.Children.OfType<TextBlock>().FirstOrDefault();
        if (TextBlock.Visibility == System.Windows.Visibility.Visible)
        {
            sampleText.Visibility = System.Windows.Visibility.Visible;
        }
    }
    i += 1;  // increasing the loop of names by 1
    this.Close();
}

我想将SetBinding方法的target属性设置为TextBlock.TextProperty但是每当我编写TextBlock ,都会出现错误提示

声明之前不能使用局部变量'TextBlock'。

我怀疑问题出在此代码-

var TextBlock = win.sp_s.Children.OfType<TextBlock>().FirstOrDefault();
        if (TextBlock.Visibility == System.Windows.Visibility.Visible)
        {
            sampleText.Visibility = System.Windows.Visibility.Visible;
        }

您已将变量名称声明为“ TextBlock”。 您试图在绑定内设置的TextBlock.Text属性与您在其下方声明的变量名称相混淆。 如果重命名此变量,则问题可能会得到解决。

 var textblock = win.sp_s.Children.OfType<TextBlock>().FirstOrDefault();
 if (textblock.Visibility == System.Windows.Visibility.Visible)
     {
         sampleText.Visibility = System.Windows.Visibility.Visible;
     }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM