Как я могу отобразить вид внутри управления контентом в wpf - PullRequest
0 голосов
/ 20 октября 2019

FirstView.xaml содержит что-то вроде этого

<ContentControl Name="ContentControlName" Grid.Row="1" Grid.Column="0" Content="{Binding SelectionViewModel}"/>

Мой SelectionView.xaml содержит

<TextBox x:Name="textBoxName" Text="{Binding Name}"/>
<TextBox IsReadOnly="True" Text="{Binding Uid}"/>

В FirstViewModel я создал свойство, как показано ниже

private SelectionViewModel selectionViewModel;
public SelectionViewModel SelectionViewModel
{
    get
    {
        return this.selectionViewModel;
    }
}

Контроль содержимого с двумя текстовыми полями не отображается при запуске

Правильно ли выполнен путь?

1 Ответ

2 голосов
/ 20 октября 2019

Поскольку вы использовали связывание, вам нужно вызвать событие PropertyChanged . Ваш класс ViewModel (SelectionViewModel) должен реализовать INotifyPropertyChanged .

public class MainViewModel : INotifyPropertyChanged
{
    public event PropertyChangedEventHandler PropertyChanged;
    private SelectionViewModel selectionViewModel;

    public SelectionViewModel SelectionViewModel
    {
        get
        {
            return this.selectionViewModel;
        }
        private set
        {
            this.selectionViewModel = value;
            PropertyChanged?.Invoke(this, nameof(SelectionViewModel));
        }
    }
}

Вы передали экземпляр SelectionViewModel в свойство Content ContentControl. Ваш ContentControl должен иметь специальную табличку данных, связанную с этой моделью представления. В противном случае это не будет работать.

Например:

<ContentControl Content="{Binding SelectionViewModel}">
    <ContentControl.ContentTemplate>
        <DataTemplate DataType="{x:Type local:SelectionViewModel}">
            <!-- Here is your template -->
        </DataTemplate>
    </ContentControl.ContentTemplate>
</ContentControl>

Также не следует использовать одинаковые имена для типа SelectionViewModel и свойства SelectionViewModel.

Так как вы не 'Мы не можем предоставить исходный код, мы не можем выяснить точную причину вашей ошибки. Я надеюсь, что это было полезно для вас.

...