Привязка к элементу внутри ContentTemplate TabControl - PullRequest
0 голосов
/ 30 апреля 2020

У меня есть TabControl с ContentTemplate, определяющий CheckBox. Вне TabControl я хочу привязать к CheckBox в выбранном в настоящее время TabItem. Как я могу это сделать?

В приведенном ниже коде CheckBox «Зеркало» привязано к CheckBox на том же уровне, который работает. Как я могу сделать Mirror-CheckBox для зеркального отображения tabCheckbox?

<Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="*" />
            <RowDefinition Height="Auto" />
            <RowDefinition Height="Auto" />
        </Grid.RowDefinitions>

        <TabControl Grid.Row="0">
            <TabControl.ContentTemplate>
                <DataTemplate>
                    <CheckBox
                        Name="tabCheckbox"
                        Content="Check me"
                        />
                </DataTemplate>
            </TabControl.ContentTemplate>

            <TabItem Header="Tab 1">
            </TabItem>
        </TabControl>

        <CheckBox
            x:Name="checkbox"
            Grid.Row="1"
            Content="Some CheckBox"
            />
        <CheckBox
            Grid.Row="2"
            Content="Mirror"
            IsChecked="{Binding ElementName=checkbox, Path=IsChecked}"
            />
    </Grid>

Ответы [ 2 ]

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

Привязка к элементу внутри DataTemplate извне, насколько я знаю, невозможна. Но вместо этого вы можете привязать флажок зеркала к tabCheckbox.

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="*" />
        <RowDefinition Height="Auto" />
        <RowDefinition Height="Auto" />
    </Grid.RowDefinitions>

    <TabControl Grid.Row="0">
        <TabControl.ContentTemplate>
            <DataTemplate>
                <CheckBox
                    x:Name="tabCheckbox"
                    Content="Check me"
                    IsChecked="{Binding IsChecked, Source={x:Reference mirrorCheckBox}}" />
            </DataTemplate>
        </TabControl.ContentTemplate>

        <TabItem Header="Tab 1">
        </TabItem>
    </TabControl>

    <CheckBox
        x:Name="mirrorCheckBox"
        Grid.Row="2"
        Content="Mirror"
        />
</Grid>

x: Ссылка позволяет ссылаться на элементы непосредственно по их именам в таких ситуациях.

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

Имеет смысл связать оба флажка с одним и тем же свойством ViewModel. Таким образом, вы сможете привязать содержимое только выделенной вкладки к модели целевого представления, используемой автономным CheckBox.

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