Как исправить привязку текстового блока в WPF MVVM?

#wpf #xaml #user-interface #mvvm #binding

#wpf #xaml #пользовательский интерфейс #mvvm #привязка

Вопрос:

Вы видите мой код XAML внизу; когда я отлаживаю его во время выполнения, я ничего не вижу в двух текстовых блоках StackPanel моего окна, тогда как в текстовых блоках привязки есть некоторые данные, когда он запущен! Почему я ничего не вижу в этих текстовых блоках?

 <Grid Name="SchoolGridView"
      AutomationProperties.AutomationId="SchoolGridView"
      AutomationProperties.Name="School Group" >
    <Grid.RowDefinitions>
        <RowDefinition Height="*"/>
        <RowDefinition Height="auto"/>
    </Grid.RowDefinitions>
    <ListView Grid.Row="0" Height="Auto"  x:Name="List" 
     HorizontalContentAlignment="Center" ItemsSource="{Binding 
     PeopleList}" SelectionMode="Single">

           ...
    </ListView>
    <StackPanel Background="LightGray" Height="60" 
       Orientation="Horizontal"  VerticalAlignment="Bottom" Grid.Row="1" 
       Visibility="{Binding 
       IsDetailVisible,UpdateSourceTrigger=PropertyChanged}">
            <StackPanel HorizontalAlignment="Left" Width="320">
                <TextBlock  Height="20" Text="asaasdasd"></TextBlock>
                <TextBlock  Height="20" HorizontalAlignment="Left" 
         Background="Yellow" Text="{Binding DataContext.FullName, 
         UpdateSourceTrigger=PropertyChanged}"/>
                <TextBlock  Height="20" HorizontalAlignment="Left" 
           Background="Yellow" Text="{Binding 
           DataContext.RowSelectedItem, 
             UpdateSourceTrigger=PropertyChanged}"/>
            </StackPanel>
            <WrapPanel HorizontalAlignment="Right">
                <Button  Content="DELETE" HorizontalAlignment="Right" 
             VerticalAlignment="Top"
                         Width="auto"  Height="50" Margin="3" Command=" 
             {Binding DataContext.DeleteCommand, ElementName=List}" 
             CommandParameter="{Binding SelectedItem, 
             ElementName=List}"/>
            </WrapPanel>
       </StackPanel>
     </Grid>
   </Window>
  

Комментарии:

1. TextBlock С текстом «asaasdasd» не привязан к данным. Вы это видите?

2. да, я вижу это; Я намеренно поставил это, чтобы проверить, но я борюсь с другими, которые ограничены данными.

3. Было бы действительно полезно больше кода, в частности, как вы привязываете ViewModel к View.

Ответ №1:

Вы должны заполнить DataContext

 <Window x:Class="SampleApplication.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:SampleApplication"
Title="MainWindow" Height="350" Width="525">
  

Или установить его в коде

  DataContext = new ViewModel();