Я разрабатываю приложение на основе WPF / PRISM.Родительское представление (usercontrol) содержит много областей, и дочерние представления (usercontrol) загружаются в эти области.Когда дочерние представления загружаются, я вижу ошибки связывания, напечатанные в консоли.Несмотря на то, что связанные свойства являются частью модели представления дочернего представления, разрешение привязки сначала смотрит на модель представления родительского представления и выдает эту ошибку.Приложение работает нормально, я хочу знать, смогу ли я избавиться от этих ошибок.
Мне удалось воссоздать это в простом приложении, которое я написал.
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 ненайдено в 'объекте' '' MainWindow '(Name =' ')'.BindingExpression: Path = SampleText;DataItem = 'MainWindow' (Name = '');целевым элементом является TextBlock (Name = '');Целевым свойством является «Текст» (тип «Строка»)
, выводимый на печать в консоли, даже если кнопка правильно отображает текст «Образец».Как мне избавиться от этого сообщения после печати в консоли, мое приложение печатает более 25 ошибок для каждого загруженного дочернего представления.