Понимание области привязки данных WPF - PullRequest
1 голос
/ 15 октября 2010

У меня есть пользовательский элемент управления, встроенный в TabItem из TabControl. TabControl - это содержимое основного Usercontrol следующим образом:

<UserControl x:Class="ControlsLibrary.wpf.Alerts.UserControl1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Height="300" Width="300">
    <Grid>
        <TabControl DataContext="{Binding Filter}">
            <TabItem>
                <mc:CustomControl DataContext="{Binding Options}"
            </TabItem>
        </TabControl>
    </Grid>
</UserControl>

Что я понимаю, так это то, что мой пользовательский элемент управления наследует DataContext от TabControl, поэтому для DataContext моего пользовательского элемента управления должно быть установлено свойство "Параметры" объекта Filter, который является DataContext из TabControl. Однако в окне вывода Visual Studio указано, что он ищет параметры в DataContext родительского элемента UserControl.

Даже если я использую свойство ElementName класса Binding, я все равно не могу изменить DataContext своего пользовательского элемента управления, даже если свойство «Filter» элемента данных реализует INotifyPropertyChanged.

Что я пропустил?

ТИА.

1 Ответ

0 голосов
/ 15 октября 2010

Я видел похожую проблему (но не проблему с элементом управления Tab, поэтому я извиняюсь, если это не работает) с этим некоторое время назад, и мне нужно было установить CustomControl в качестве шаблона элемента управления TabItem.

    <TabControl DataContext="{Binding Filter}">
        <TabItem>
            <TabItem.Template>
                <ControlTemplate>
                    <mc:CustomControl DataContext="{Binding Options}" />
                </ControlTemplate>
            </TabItem.Template>
        </TabItem>
    </TabControl>

, который фактически влияет на логику и визуальное позиционирование CustomControl в иерархии наследования.

Попробуйте, дайте мне знать, если это работает

НТН

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...