【发布时间】:2011-06-28 18:12:18
【问题描述】:
我正在开发一个基于 WPF/PRISM 的应用程序。父视图(用户控件)中有许多区域,子视图(用户控件)加载在这些区域中。当子视图被加载时,我可以看到控制台中打印的绑定错误。即使绑定的属性是子视图的视图模型的一部分,绑定分辨率似乎首先查看父视图的视图模型并引发此错误。该应用程序运行良好,我想知道我是否可以摆脱这些错误。
我已经设法在我编写的一个简单应用程序中重新创建了它。
C#
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
this.DataContext = this;
this.Loaded += (o, e) => { this.layout.DataContext = new ViewModel(); };
}
}
public class ViewModel
{
public ViewModel()
{
this.SampleText = "Sample";
}
public string SampleText { get; set; }
}
XAML
<Window x:Class="DataBindingResolution.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:diagnostics="clr-namespace:System.Diagnostics;assembly=WindowsBase"
Title="MainWindow" Height="350" Width="525">
<Grid x:Name="layout">
<Grid.Resources>
<TextBlock x:Key="test" Text="{Binding SampleText}"/>
</Grid.Resources>
<Button Content="{StaticResource test}"/>
</Grid>
</Window>
当您运行此示例时,您可以看到:
System.Windows.Data 错误:39: BindingExpression 路径错误: 'SampleText' 属性未找到 '对象' ''主窗口' (名称='')'。 绑定表达式:路径=示例文本; 数据项='主窗口'(名称=''); 目标元素是'TextBlock' (名称='');目标属性是“文本” (输入“字符串”)
即使按钮在其中正确显示文本“示例”,也会在控制台中打印。如何避免在控制台中打印此消息,我的应用程序会为每个加载的子视图打印 25 个以上的错误。
【问题讨论】:
标签: c# wpf data-binding