目测两个button的content需要两个textblock对象
你再new一个吧

解决方案 »

  1.   

    问题出在button1和button2使用了同一个引用。
                button1.Content = tt;
                button2.Content = tt;逻辑上,tt是button1的子节点。因此,button1.Content可以拿到tt。
    但是,从视觉上看,tt作为一个Visual只能是一个按键的子孙节点,因为Visual要有具体的位置和大小。
    因此,在渲染下,tt只出现在button2下面。
    视觉树:
    Button
      ButtonChrome
        ContentPresenter
    Button
      ButtonChrome
        ContentPresenter
          TextBlock     // tt在这里private void button2_Click(object sender, RoutedEventArgs e)
    {
        var c = button1.Content;
        MessageBox.Show((c as TextBlock).Text);    StringBuilder sb = new StringBuilder("视觉树:\r\n");
        EnumVisual(button1.Parent as Visual, sb, 0);
        MessageBox.Show(sb.ToString());    sb = new StringBuilder("逻辑树:\r\n");
        EnumLogical(button1.Parent, sb, 0);
        MessageBox.Show(sb.ToString());
    }private void EnumVisual(Visual v,  StringBuilder sb, int level)
    {
        for(int i = 0; i < VisualTreeHelper.GetChildrenCount(v); i++)
        {
            Visual child = (Visual)VisualTreeHelper.GetChild(v, i);
            sb.AppendFormat("{0}{1}\r\n", new string(' ', level * 2), child.GetType().Name);
            EnumVisual(child, sb, level + 1);
        }
    }private void EnumLogical(DependencyObject o, StringBuilder sb, int level)
    {
        foreach(object child in LogicalTreeHelper.GetChildren(o))
        {
            sb.AppendFormat("{0}{1}\r\n", new string(' ', level * 2), child);
            if (child is DependencyObject)
            {
                EnumLogical(child as DependencyObject, sb, level + 1);
            }
        }
    }
      

  2.   

    如果嵌入image到多个element的话,会得到Specified Element is already Logical Child of another element的错误,应该是一个element只能有一个parent. 大概看了下你的需求,可以试一试下面的解决方法:1.  用Style来给Textblock的Text赋值,赋的值 是DynamicResource,在cs中指定。   <Window.Resources>
            <Style TargetType="TextBlock">
                <Setter Property="Text" Value="{DynamicResource MyResource}"></Setter>
            </Style>
        </Window.Resources>
        
        <Grid>
            <Button Name ="Button1" HorizontalAlignment="Left" Margin="89,77,0,0" VerticalAlignment="Top" Width="75" Click="Button1_Click">
                <TextBlock></TextBlock>
            </Button>
            <Button Name ="Button2" HorizontalAlignment="Left" Margin="89,131,0,0" VerticalAlignment="Top" Width="75">
                <TextBlock></TextBlock>
            </Button>    </Grid>
    2. 后台代码,初始化DynamicResource,点击按钮修改DynamicResource        public MainWindow()
            {
                InitializeComponent();            this.Resources["MyResource"] = "Test";
            }        private void Button1_Click(object sender, RoutedEventArgs e)
            {
                this.Resources["MyResource"] = "Changed";
            }
      

  3.   

    这个应该跟Window窗口初始化有关,你如果把你的代码放到 loaded事件里 会发现 第二个button 没有内容!!!!这就比较诡异了。个人理解是 跟button的Content属性与初始化顺序有关。  如果你使用以下代码就会同时显示:TextBlock tt = new TextBlock() { Text = "张三" };
                button1.SetValue(ContentProperty, tt);
                button2.Content = tt.Text;同时指定它的text为content或者指定其中一个。
      

  4.   

    还是感觉楼上的同志,没有说清楚诶。想知道MSDN上面有没有这种情况的解释
      

  5.   

    还是感觉楼上的同志,没有说清楚诶。想知道MSDN上面有没有这种情况的解释
      

  6.   

    想知道为什么,为什么不自己去msdn上搜??你小学毕业,看不懂英文?
      

  7.   

    在WinForm中,一个控件实例同样不能被多个容器包含。实际上,你应该绑定到数据上,同样的数据得到同样的显示;而不应该去关心是否用‘同一个控件’来显示。
    比如改变你的代码:
            string tt = "张三" ;
            button1.Content = tt;
            button2.Content = tt;
      

  8.   

    Forty2的回答已经说明问题了。
    +1
      

  9.   

    还是不清楚:button1的Content也是TextBlock ,其Text也是"张三",可是,为什么没有显示出来呢?
      

  10.   

    还是不清楚:button1的Content也是TextBlock ,其Text也是"张三",可是,为什么没有显示出来呢?
      

  11.   


    一个TextBlock只能有一个parent,你把它赋给button2的同时,就从button1中删除了。
      

  12.   


    一个TextBlock只能有一个parent,你把它赋给button2的同时,就从button1中删除了。
    可是,事实上,最后的结果是button1的Content也是TextBlock ,其Text也是"张三",可是,为什么没有显示出来呢?
      

  13.   


    一个TextBlock只能有一个parent,你把它赋给button2的同时,就从button1中删除了。
    可是,事实上,最后的结果是button1的Content也是TextBlock ,其Text也是"张三",可是,为什么没有在button1上显示出来呢?