2014-01-22 3 views
0

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

< Grid Name=YParamTextBlock> 
     <TextBlock HorizontalAlignment="Center"/> 
     <Popup PlacementTarget="{Binding ElementName=YParamTextBlock}} Placement="Center"> 
      <Popup.VerticalOffSet> 
        <MultiBinding Mode="OneWay" Converter="{StaticResource OffsetConverter} NotifyOnTargetChanged="True"> 
         <Binding Mode="OneWay" ElementName="YParamTextBlock" Path="ActualHeight" NotifyOnTargetUpdated="True"/> 
         <Binding Mode="OneWay" RelativeSource={RelativeSource Self} Path="ActualHeight" NotifyOnTargetChanged="True"/> 
        </MultiBinding> 
       </Popup.VerticalOffset> 
     </Popup> 
    <Grid> 

Проблема заключается в том, что фактическая высота 0,0 для двух элементов управления, когда они сначала создаются, так что я добавил NotifyOnTargetChanged для того, чтобы исправить это. Теперь по какой-то причине NotifyOnTargetChanged исправил привязку для ActualHeight Grid, но Popup все равно 0.0. В любом случае, чтобы уведомить всплывающее окно, фактическая высота изменилась? Или любое другое решение для этой проблемы?

+0

Извините за неправильную часть кода, я написал это на своем смартфоне. Если кто-то отредактировал мой вопрос, чтобы правильно показать код, я был бы благодарен .. – gilmishal

ответ

0

Фактическая высота и ширина read-only вы не можете связать напрямую, вы можете использовать решение объяснена Кент Boogaart в этом Answer

+0

Я не пытаюсь изменить высоту, я пытаюсь ее получить .. – gilmishal

+0

Опубликуйте свой код, если вы можете –

+0

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

0

Почему MultiBinding? VerticalOffset - это двойник, поэтому вам нужно только одно обязательное значение.

Я не знаю, что делает ваш конвертер, но если вы хотите, чтобы он принял свойство ActualHeight вашей сетки YParamTextBlock, а затем вернул двойной, соответствующий VerticalOffset, который вы хотите предоставить вашему всплывающему окну, то, вероятно, проще после чего:

<Grid x:Name="YParamTextBlock"> 
     <TextBlock HorizontalAlignment="Center"/> 
     <Popup PlacementTarget="{Binding ElementName=YParamTextBlock}} 
       Placement="Center" 
       VerticalOffset="{Binding ActualHeight, ElementName=YParamTextBlock, 
           Converter={StaticResource OffsetConverter}}"/> 

<Grid> 
+0

Причина, по которой мне нужно многосвязывание, потому что смещение является результатом heightOfGrid/2 + heightOfPopup/2 Я хочу разместить его внизу центра сетки – gilmishal

+0

И в любом случае фактическая высота всплывающего окна по-прежнему равна 0.0 – gilmishal

Смежные вопросы