2016-06-20 5 views
0

私はGridStackPanel持つオブジェクトを有する結合とのStackPanelの可視性を設定しようとします。1以上の他のStackPanelsは現在表示されている場合

右側のパネルには、4つの垂直ToggleButtonオブジェクトがあります。

4つのそれぞれのStackPanelオブジェクトがVisbilityため結合を使用しています。例:

<StackPanel x:Name="panelMaterialAndSettings" Grid.Row="3" Background="WhiteSmoke" Margin="2" 
      Visibility="{Binding IsChecked, ElementName=buttonMaterialAndSettings, Converter={StaticResource BoolToVis}, FallbackValue=Collapsed}"> 

素晴らしいです。私が頭を上げることができない問題は、親のStackPanelです。また、Vibilityプロパティをバインドする必要がありますが、shadowlは4つの子パネルの1つ以上が現在表示されている場合にのみtrueを返します。

私はそれを修正できない場合は、マニュアルバックワードコードですべてを行うことができます。

または、4つのToggleButtonsを確認できます。しかし、私は失敗している。

マークアップ:他のMultiDataTriggerについての私の注意に持って来ら

<Grid Grid.Row="1" Grid.RowSpan="4" Grid.Column="2" Margin="2,0,2,2"> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="*" /> 
     <ColumnDefinition Width="auto" /> 
    </Grid.ColumnDefinitions> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="*"/> 
    </Grid.RowDefinitions> 
    <StackPanel x:Name="panelExtraFeatures" Visibility="Collapsed" MinWidth="500" Grid.Column="0"> 
     <StackPanel.Background> 
      <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"> 
       <GradientStop Color="Black" Offset="0"/> 
       <GradientStop Color="{DynamicResource {x:Static SystemColors.AppWorkspaceColorKey}}" Offset="1"/> 
      </LinearGradientBrush> 
     </StackPanel.Background> 
     <Grid> 
      <Grid.ColumnDefinitions> 
       <ColumnDefinition Width="*"/> 
      </Grid.ColumnDefinitions> 
      <Grid.RowDefinitions> 
       <RowDefinition Height="1*"/> 
       <RowDefinition Height="1*"/> 
       <RowDefinition Height="1*"/> 
       <RowDefinition Height="1*"/> 
      </Grid.RowDefinitions> 
      <StackPanel x:Name="panelStudentPicker" Grid.Row="0" Background="WhiteSmoke" Margin="2,2,2,10" <StackPanel x:Name="panelStudentPicker" Grid.Row="0" Background="WhiteSmoke" Margin="2,2,2,10" 
          Visibility="{Binding IsChecked, ElementName=buttonStudentPicker, Converter={StaticResource BoolToVis}, FallbackValue=Collapsed}"> 
       <Label Content="Student Picker" Background="LightSkyBlue" /> 
       <Label>Panel 1</Label> 
       <Label>Panel 1</Label> 
       <Label>Panel 1</Label> 
       <Label>Panel 1</Label> 
      </StackPanel> 
      <StackPanel x:Name="panelDemonstrationPicker" Grid.Row="1" Background="WhiteSmoke" Margin="2,2,2,10" 
         Visibility="{Binding IsChecked, ElementName=buttonDemonstrationPicker, Converter={StaticResource BoolToVis}, FallbackValue=Collapsed}"> 
       <Label Content="DemonStration Picker" Background="LightSkyBlue" /> 
       <Label>Panel 2</Label> 
       <Label>Panel 2</Label> 
       <Label>Panel 2</Label> 
       <Label>Panel 2</Label> 
      </StackPanel> 
      <StackPanel x:Name="panelAssignmentHistory" Grid.Row="2" Background="WhiteSmoke" Margin="2,2,2,10" 
         Visibility="{Binding IsChecked, ElementName=buttonAssignmentHistory, Converter={StaticResource BoolToVis}, FallbackValue=Collapsed}"> 
       <Label Content="Assignment History" Background="LightSkyBlue" /> 
       <Label>Panel 3</Label> 
       <Label>Panel 3</Label> 
       <Label>Panel 3</Label> 
       <Label>Panel 3</Label> 
      </StackPanel> 
      <StackPanel x:Name="panelMaterialAndSettings" Grid.Row="3" Background="WhiteSmoke" Margin="2" 
         Visibility="{Binding IsChecked, ElementName=buttonMaterialAndSettings, Converter={StaticResource BoolToVis}, FallbackValue=Collapsed}"> 
       <Label Content="Material and Settings" Background="LightSkyBlue" /> 
       <GroupBox Header="Treasures From God's Word:" Margin="2"> 
        <StackPanel HorizontalAlignment="Stretch"> 
         <Label>Bible Reading:</Label> 
         <TextBox/> 
        </StackPanel> 
       </GroupBox> 
       <GroupBox Header="Apply Yourselves To The Field Ministry" Margin="2"> 
        <Grid> 
         <Grid.ColumnDefinitions> 
          <ColumnDefinition Width="1*"/> 
          <ColumnDefinition Width="2*"/> 
         </Grid.ColumnDefinitions> 
         <Grid.RowDefinitions> 
          <RowDefinition Height="auto" /> 
          <RowDefinition Height="auto" /> 
          <RowDefinition Height="auto" /> 
          <RowDefinition Height="auto" /> 
          <RowDefinition Height="auto" /> 
          <RowDefinition Height="auto" /> 
         </Grid.RowDefinitions> 
         <Label Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="2">Student Assignment #1:</Label> 
         <ComboBox Grid.Row="1" Grid.Column="0" IsEditable="True" SelectedIndex="0" Margin="2"> 
          <ComboBoxItem Content="Initial Call"/> 
          <ComboBoxItem Content="Return Visit"/> 
          <ComboBoxItem Content="Bible Study"/> 
         </ComboBox> 
         <TextBox Grid.Row="1" Grid.Column="1"/> 
         <Label Grid.Row="2" Grid.Column="0" Grid.ColumnSpan="2">Student Assignment #2:</Label> 
         <ComboBox Grid.Row="3" Grid.Column="0" IsEditable="True" SelectedIndex="1" Margin="2"> 
          <ComboBoxItem Content="Initial Call"/> 
          <ComboBoxItem Content="Return Visit"/> 
          <ComboBoxItem Content="Bible Study"/> 
         </ComboBox> 
         <TextBox Grid.Row="3" Grid.Column="1"/> 
         <Label Grid.Row="4" Grid.Column="0" Grid.ColumnSpan="2">Student Assignment #3:</Label> 
         <ComboBox Grid.Row="5" Grid.Column="0" IsEditable="True" SelectedIndex="2" Margin="2"> 
          <ComboBoxItem Content="Initial Call"/> 
          <ComboBoxItem Content="Return Visit"/> 
          <ComboBoxItem Content="Bible Study"/> 
         </ComboBox> 
         <TextBox Grid.Row="5" Grid.Column="1"/> 
        </Grid> 
       </GroupBox> 
      </StackPanel> 
     </Grid> 
    </StackPanel> 
    <StackPanel Grid.Column="1" Margin="2,0,2,2"> 
     <StackPanel.Background> 
      <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"> 
       <GradientStop Color="{DynamicResource {x:Static SystemColors.ActiveCaptionColorKey}}"/> 
       <GradientStop Color="White" Offset="1"/> 
      </LinearGradientBrush> 
     </StackPanel.Background> 

     <ToggleButton x:Name="buttonStudentPicker" Content="Student Picker" HorizontalAlignment="Right" Margin="2,10,2,10" BorderThickness="0,5,0,0" Background="{x:Null}"> 
      <ToggleButton.LayoutTransform> 
       <RotateTransform Angle="90"/> 
      </ToggleButton.LayoutTransform> 
     </ToggleButton> 
     <ToggleButton x:Name="buttonDemonstrationPicker" Content="Demonstrations Picker" HorizontalAlignment="Right" Margin="2,2,2,10" BorderThickness="0,5,0,0" Background="{x:Null}"> 
      <ToggleButton.LayoutTransform> 
       <RotateTransform Angle="90"/> 
      </ToggleButton.LayoutTransform> 
     </ToggleButton> 
     <ToggleButton x:Name="buttonAssignmentHistory" Content="Assignment History" HorizontalAlignment="Right" Margin="2,2,2,10" BorderThickness="0,5,0,0" Background="{x:Null}"> 
      <ToggleButton.LayoutTransform> 
       <RotateTransform Angle="90"/> 
      </ToggleButton.LayoutTransform> 
     </ToggleButton> 
     <ToggleButton x:Name="buttonMaterialAndSettings" Content="Material and Settings" HorizontalAlignment="Right" Margin="2" BorderThickness="0,5,0,0" Background="{x:Null}"> 
      <ToggleButton.LayoutTransform> 
       <RotateTransform Angle="90"/> 
      </ToggleButton.LayoutTransform> 
     </ToggleButton> 
    </StackPanel> 

</Grid> 
+0

あなたはANYが見えるかそうでないかどうかを確認するためにバインディングのソースとして制御要素を取り、その後、各ボタンにアクセスする別のコンバータを作成しようとしている:

は、私は次のように出てくることができました? IMul​​tiValueConverter実装の可視性をチェックするために各ボタンを渡すマルチバインディングコンバータを使用するのは、他の方法だけです。あなたはコードをまったく避けようとしていますか、そして完全にXAMLで行いますか? –

+0

@DavidGlass提案をいただきありがとうございます。他の人のサポートによって、私は解決策を考え出すことができました。ありがとうございました。 –

+1

これは基本的にマークされた複製と同じです。唯一の違いは、関連する特定のプロパティです。しかし、これは、「1つのターゲットプロパティに2つ以上のソースプロパティをバインドするにはどうすればよいですか」などの質問の場合と同じ答えです。 "ここで尋ねるように、4つの' IsChecked'プロパティを単一のVisibility'プロパティにバインドするにはどうすればいいですか? " –

答えて

0

誰か。

したがって、私は件名に良いresourceを見つけることができました。

<StackPanel.Style> 
    <Style TargetType="StackPanel"> 
     <Setter Property="Visibility" Value="Visible" /> 
     <Style.Triggers> 
      <MultiDataTrigger> 
       <MultiDataTrigger.Conditions> 
        <Condition Binding="{Binding ElementName=buttonStudentPicker, Path=IsChecked}" Value="False" /> 
        <Condition Binding="{Binding ElementName=buttonDemonstrationPicker, Path=IsChecked}" Value="False" /> 
        <Condition Binding="{Binding ElementName=buttonAssignmentHistory, Path=IsChecked}" Value="False" /> 
        <Condition Binding="{Binding ElementName=buttonMaterialAndSettings, Path=IsChecked}" Value="False" /> 
       </MultiDataTrigger.Conditions> 
       <Setter Property="Visibility" Value="Collapsed" /> 
      </MultiDataTrigger> 
     </Style.Triggers> 
    </Style> 
</StackPanel.Style> 
関連する問題