Как связать со свойством зависимости объекта зависимости? - PullRequest
0 голосов
/ 23 апреля 2020

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

Я определил класс с одним свойством зависимости, как показано ниже.

public class TestMap : DependencyObject
{
    public bool TestProperty
    {
        get { return (bool)GetValue(TestPropertyProperty); }
        set { SetValue(TestPropertyProperty, value); }
    }

    public static readonly DependencyProperty TestPropertyProperty =
        DependencyProperty.Register("TestProperty", typeof(bool), typeof(TestMap), new PropertyMetadata(false));
}

Теперь я собираюсь используйте вышеупомянутый класс в UserControl. Следующий код является примером.

public class UserControl1 : Control
{
    public TestMap TestMap { get; set; }
}

И я использовал UserControl1 в главном окне, как показано ниже.

<Window>
    <Grid>
        <local:UserControl1 />
    </Grid>
</Window>

Приведенный выше код работает хорошо, но если я пытаюсь привязать к TestMap .TestProperty что я должен делать? Я попробовал следующий код, но он не работает. (Предположим, что ViewModel привязана)

<Window>
    <Grid>
        <local:UserControl1 TestMap.TestProperty="{Binding ViewModelProperty}"/>
    </Grid>
</Window>

Сообщение об ошибке для кода выше, как показано на рисунке ниже.

enter image description here

Ошибка сообщение «Не удалось найти подключаемое свойство TestProperty» в формате «TestMap».

Спасибо за чтение.

1 Ответ

0 голосов
/ 23 апреля 2020

Нельзя привязать к вложенному свойству, то есть к свойству TestProperty объекта, возвращаемого свойством TestMap, как в XAML. Это не поддерживается.

Вы должны либо переместить TestProperty в UserControl, либо установить его программно, либо рассмотреть возможность использования присоединенного свойства зависимостей , которое можно установить для любого объекта указанного объекта. c тип.

...