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

Кто-нибудь знает, как я могу изменить приведенный ниже код XAML? Это в представлении WeUserControl

    <Grid.MaxWidth>
        <MultiBinding Converter="{StaticResource WeMaxWidthConverter}">
            <Binding ElementName="mainWindowTabControl" Path="ActualWidth"/>
        </MultiBinding>
    </Grid.MaxWidth>

С той точки зрения, в которой он используется, это буквально просто:

<views:WeUserControl Grid.Column="0" Grid.Row="1" />

И он инкапсулирован в элемент управления вкладкой, в данном случае называемый mainWindowTabControl

0
sushi7777 18 Авг 2020 в 18:19

2 ответа

Лучший ответ

Это просто элемент управления вкладками, который вы ищете, и сетка будет внутри его визуального дерева.

Привязка источника родственника будет следующей:

<Binding Path="ActualWidth" 
         RelativeSource="{RelativeSource AncestorType={x:Type TabControl}}" />
1
Andy 20 Авг 2020 в 15:45

Если вы добавите общедоступное свойство под названием «TabControl» к родительскому окну, которое возвращает ссылку на TabControl, вы сможете привязаться к нему таким образом из любого дочернего элемента окна. :

<Binding Path="TabControl.ActualWidth" 
         RelativeSource="{RelativeSource FindAncestor, AncestorType={x:Type Window}}" />
1
mm8 18 Авг 2020 в 15:39