2015-09-28 7 views
0

У меня есть сетка в моем приложении, и мне нужна эта сетка, чтобы работать как всплывающее окно при проверке переключателя, которое должно появиться, и, не снимая отметки, должно исчезнуть, и для этого я написал такой код.WPF grid и togglebutton взаимное связывание

 <Grid x:Name="popup" Visibility="{Binding IsChecked,ElementName=button,Converter={StaticResource BooleanToVisibility}}" > 
<Grid.Resources><Storyboard x:Key="ResetButton1"> 
         <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(ToggleButton.IsChecked)" 
           Storyboard.TargetName="button"> 
          <DiscreteObjectKeyFrame KeyTime="0"> 
           <DiscreteObjectKeyFrame.Value> 
            <System:Boolean>False</System:Boolean> 
           </DiscreteObjectKeyFrame.Value> 
          </DiscreteObjectKeyFrame> 
         </ObjectAnimationUsingKeyFrames> 
        </Storyboard></Grid.Resources> 
<i:Interaction.Triggers> 
        <i:EventTrigger EventName="TouchDown"> 
         <ei:ControlStoryboardAction Storyboard="{StaticResource ResetButton1}" /> 
        </i:EventTrigger> 
       </i:Interaction.Triggers> 
<TextBlock >this is a popup</TextBlock> </Grid> 

     <ToggleButton x:Name="button"></ToggleButton> 

Проблема возникает, когда я снимаю контрольную кнопку после того, как проверил ее. Всплывающее окно остается там с анимацией. Он отлично работает, когда я выхожу из окна togglebutton. Как я могу справиться с этим?

ответ

0

Хорошо, так что у вас в настоящее время это не имеет особого смысла. Подписка на событие TouchDown, чтобы отключить раскадровку, которая просто снимает отметки ToggleButton, представляет собой циклическую петлю, отрицающую себя.

Вместо этого просто бросьте пару. Трюки там, чтобы переключить видимость сетки и избавиться от этой раскадровки и TouchDown EventTrigger.

Так что просто бросьте что-то подобное в качестве триггеров.

<DataTrigger Binding="{Binding IsChecked, ElementName=button}" Value="True"> 
    <Setter Property="Visibility" Value="Visible"/> 
</DataTrigger> 

<DataTrigger Binding="{Binding IsChecked, ElementName=button}" Value="False"> 
    <Setter Property="Visibility" Value="Collapsed"/> 
</DataTrigger> 

Или вы можете также использовать ChangePropertyAction из смеси SDK для МОФ.

Надеюсь, это поможет.

+0

но мне нужно изменить видимость всплывающего окна, когда я выхожу за пределы всплывающего окна. –

+0

@AliasVarghese. Если это все, что вы ищете, почему бы просто не использовать фактический всплывающий файл (https://msdn.microsoft.com). /en-us/library/system.windows.controls.primitives.popup%28v=vs.110%29.aspx), то? Ваш вопрос просто спрашивает, как переключать видимость на основе IsChecked bool ToggleButton, так что это немного вводит в заблуждение, не так ли? –

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

  • Нет связанных вопросов^_^