关于网友提出的“WPF,这个绑定有点怪”问题疑问,本网通过在网上对“WPF,这个绑定有点怪”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题:WPF,这个绑定有点怪
描述:本帖最后由 d454ew32 于 2014-10-21 17:15:52 编辑
<>
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
public static readonly DependencyProperty CurrentTextBlockProperty = DependencyProperty.Register("CurrentTextBlock", typeof(TextBlock), typeof(MainWindow), new FrameworkPropertyMetadata(null));
public TextBlock CurrentTextBlock
{
get { return (TextBlock)GetValue(CurrentTextBlockProperty); }
set { SetValue(CurrentTextBlockProperty, value); }
}
private void button1_Click(object sender, RoutedEventArgs e)
{
this.DataContext = this;
CurrentTextBlock = new TextBlock() { Name = "textblock1", Background = new SolidColorBrush(Colors.Red), Text = "张三" };
}
}

上面的代码中,ContentPresenter 的Content属性绑定到CurrentTextBlock属性上,当点击button1之后,在窗体中,ContentPresenter 的Content正确显示了一个TextBlock 。
但是,如果将button1的Content属性也绑定到CurrentTextBlock属性上,如下所示:
<>
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
单击button1之后,却只有button1的Content显示了TextBlock ,而ContentPresenter 的Content却没有显示TextBlock,如下图:

请问,这是什么原因呢?
解决方案1:public MainWindow()
{
InitializeComponent();
button1.DataContext = this;
ContentPresenter1.DataContext = this;}
这样试试
解决方案2: 一个控件(此处泛指Visual类的派生类)只能有一个VisualParent
想要达到你想的效果,请使用VisualBrush
解决方案3: 测试了,确实存在这样的问题,但是,实际上CurrentTextBlock已经绑定到ContentPresenter 上了
private void button1_Click(object sender, RoutedEventArgs e)
{
this.DataContext = this;
this.CurrentTextBlock = new TextBlock() { Name = "textblock1", Background = new SolidColorBrush(Colors.Red), Text = "张三" };
Console.WriteLine((this.ContentPresenter1.Content as TextBlock).Background);
Console.WriteLine((this.ContentPresenter1.Content as TextBlock).Text);
}
//输出
#FFFF0000
张三
把绑定的方法改一下吧
解决方案4: 一个textBlock只能在一个地方显示,在A地方显示就不能在B地方显示了
以上介绍了“WPF,这个绑定有点怪”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/1588234.html