2016-10-19 1 views
1

TidBit:これはXAMLでのみ実行でき、C#ではアクセスできません。異なるスタイルのマルチレイヤーグリッド、チャイルドスタイルでは発射しないWPF

私は、ユーザーに応じてコンテンツを有効/無効にするスタイルで、グリッドにフォーム(他のすべてのコントロールを制御するメイングリッド)があるジレンマを持っています。今、グループボックスを表示/非表示にするスタイルのチェックボックスを追加しました。初期のセッターが適用されるが、私の問題は、このスタイルは発生しませんということです。

<Style x:Key="StatusVisibility"> 
     <Setter Property="Control.Visibility" Value="Hidden"/> 
     <Style.Triggers>     
      <DataTrigger Binding="{Binding Source={StaticResource Dsource}, Path=Value.Properties[chkbox1].Value}" Value="Y"> 
       <Setter Property="Control.Visibility" Value="Visible"/> 
      </DataTrigger> 
     </Style.Triggers> 
    </Style> 

したがって、この場合には、視認性が隠さに設定されるだろうと私は反転した場合、私は、それを見ることができませんここのセッター(最初は表示はVisible)はグループボックスを表示します。ここで

<CheckBox Grid.Row="0" Grid.Column="0" Margin="2,0,2,0" VerticalContentAlignment="Center" Name="ckbox1" HorizontalAlignment="Left" Width="Auto" MinWidth="100" 
          IsChecked="{Binding Source={StaticResource Dsource}, Path=Value.Properties[ckbox1].Value,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" 
          Content = "Display ?"/> 

は私がしようとしているグループボックスである:あるされている場合、「Y」または「N」は、可視性を設定するように、物事はもう少し奇妙、このチェックボックスがデータベースに設定されていることを確認するには

設定するには:

<GroupBox Header="GroupBox" Name="GroupBox" VerticalAlignment="Top" ClipToBounds="False" Margin="2,0,2,0" Style="{StaticResource StatusVisibility}"> 

を今、私はこれでつもりところ、2つのグリッドがある場合に続いする必要がある特定のルールがあり、親グリッドスタイルはチャイルズグリッドスタイルを上書きしますか?

また、この子グループボックスをオン/オフにしたい場合は、特別な操作を行う必要がありますか?

おかげ

+0

あなたの 'DataTrigger'でバインドしようとしているプロパティが、何らかの' INotifyPropertyChanged'イベントを発生させたとします。そのプロパティが変更されたときに 'DataTrigger'が起動されるようにするには、これが必要になります。 – GEEF

+0

@GEEFいいえ、私はXAMLにしかアクセスできません。 XAMLでブール値を作成し、スタイルを制御する必要がありますか?しかし、どうすればそれを保存し、それをデータベースにもプッシュできますか? –

+0

プロパティがINPCをサポートしているかどうか調べる方法はありますか? – GEEF

答えて

1

あなたがアクセスの背後にあるコードをお持ちでない場合は、あなたが結合することにより、XAMLでそれをすべて行うことができ、あなたのごCheckBox.IsCheckedプロパティへGroupBox.Visibility

<StackPanel> 
    <GroupBox Visibility="{Binding ElementName=MyCheckbox, Path=IsChecked, Converter={VisibilityConverter}}"/> 
    <CheckBox x:Name="MyCheckbox" /> 
</StackPanel> 

これはVisibilityConverterを作るためにあなたを必要とします(簡単なGoogle検索)。 DataTriggerを削除できます。

+0

魅力的な作品!しかし、 "Collapse"から "Hidden"への可視性を設定する方法はありますか?それともコンバータの責任ですか? '' –

+0

最後のコメントは無視してください。ご協力いただきありがとうございます! –

+0

通常、これはコンバータの責任であり、それはVisibilityConverterにとって非常に一般的な追加方法です。それにパラメータ "HIDDEN"を渡してから、 'Convert'メソッドの中でパラメータオブジェクトをチェックしてください。 – GEEF

関連する問題