Задание элементов управления DataContext при привязке других свойств к родительскому контексту - PullRequest
0 голосов
/ 29 августа 2018

У меня есть следующая настройка структуры класса.

public class Control1
{
   public Control1()
    {
       Control2Model = new Control2();
    }

   public Control2 Control2Model {get; set;}
   public bool IsControlTwoVisible => true;

}

В моем xaml у меня есть UserControl с именем CustomUserControl, которому я хочу передать Control2Model. Я также хочу привязать IsControlTwoVisible к моей CustomUserControls Visibility собственности.

<UserControl x:Class="Control1">
  <StackPanel>

     <!--Other controls above this-->

    <CustomUserControl
        DataContext="{Binding Control2Model }"
        Visibility="{Binding IsControlTwoVisible, Converter={StaticResource VisibilityConverter}" />

  </StackPanel>
 </UserControl>

Но я получаю ошибку привязки, потому что CustomUserControl не может найти IsControlTwoVisible на Control2Model.

Есть ли способ установить контекст CustomUserControls, сохраняя при этом доступ к свойствам Control1?

Примечание. Я хочу избежать перемещения IsControlTwoVisible на Control2.

1 Ответ

0 голосов
/ 29 августа 2018

Я бы предложил не устанавливать DataContext в Control1, а вместо этого на верхнюю сетку внутри CustomUserControl. Это решит вашу проблему.

Пожалуйста, обратитесь к приведенному ниже коду для справки:

Control1.xaml

<UserControl x:Class="Control1">
  <StackPanel>

     <!--Other controls above this-->

    <CustomUserControl
        Visibility="{Binding IsControlTwoVisible, Converter={StaticResource VisibilityConverter}" />

  </StackPanel>
 </UserControl>

CustomUserControl.xaml

<UserControl
    x:Class="UWPBlankApp.CustomUserControl"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:UWPBlankApp"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    d:DesignHeight="300"
    d:DesignWidth="400">

    <Grid  DataContext="{Binding Control2Model}">
       <!--Other controls-->
    </Grid>
</UserControl>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...