(単純に)(参考にしながら、潜在的にネストされた要素のグループをスタイルする方法XAML/WPFの親要素レベルのスタイルは1つだけです。その後、1つのスタイル参照を使用して(ネストされた)要素のスタイルを設定する方法
<div class="levels"><!--1st level; only reference to the style-->
<div><!--2nd level-->
<div></div><!--3rd level-->
</div>
<div></div><!--2nd level-->
</div>
とによって、それをスタイル::HTML/CSSで
それを行うことが可能である。これは、親に一度だけのスタイル「レベル」を参照することが可能になる
.levels {
width: 400px; height: 400px;
background-color:red;}
.levels div {
width: 100px; height: 100px;
background-color:green;}
.levels div div {
width: 50px; height: 50px;
background-color:yellow;}
新しい要素に親要素(xamlまたは動的にコードのいずれか)の下に新しい要素が追加されたときに、新しい要素に「class = levelx」を追加する必要はありません素子。
XAML/WPFでも同じことができますか? BasedOnプロパティは、私が望むものではないようです:a)プロパティの継承を探していません。b)新しいスタイルに定義されたx:Keyがないかぎり、それは指定されたTargetTypeのすべての要素に適用され、そうであれば、再び指定された要素(Style="{static resource levelx}"
)で参照する必要があります。 <Setter Property="Grid.Grid.Background" Value"Red">
は残念ながら動作しません。
このような要素グループをスタイルする適切な方法は何ですか?それぞれのネストされた要素の特定のスタイルを参照することは、不必要に乱雑に思えます。ここで
は、素子構造の具体的な例ですが、私は、これは、多くの異なる状況のための一般的な問題であることを考慮してください。
<Grid Style="{StaticResource Levels}"><!--1st level-->
<Grid><!--2nd level-->
<Grid></Grid><!--3rd level-->
<Image Source="/Resources/xxx.png"/><!--3rd level-->
</Grid>
<Grid><!--2nd level-->
<Grid></Grid><!--3rd level-->
<Image Source="/Resources/yyy.png" x:Name="yyy"/><!--3rd level-->
</Grid>
<Grid><!--2nd level-->
<Image Source="/Resources/zzz.png"/><!--3rd level-->
</Grid>
</Grid>
は、これはおそらく重複しているが、私は答えを見つけることができませんでした。
プロパティのどのようなあなたがネストされた要素の間で共有することを目指していますか? 幅、高さ、マージンなど何か? それはちょうど私かもしれませんが、あなたのXAMLの例では避けるべきプロパティの重複を正確には示していません。 絞り込みたいことを詳しく教えてください。 – MichaelThePotato
@MichaelThePotatoはい、そのようなプロパティは正確です。たとえば、私は親のグリッドに赤い背景を、2番目の階層のANYネストされたグリッドは緑色の背景を持ち、3番目のANYグリッドは黄色の背景を持ち、ANYの画像は3番目のレベルにあります(2番目のlvlグリッド)を特定の高さ/幅などにする必要があります。これらの各要素のスタイルの参照を指定する必要はありません。この例のCSSとまったく同じです。 – Demo
正確に "レベル"の正確な定義は何ですか? 親グリッドが最初のレベルであると仮定し、すべての直接子グリッドを2番目のレベルとして意味しますか? XXX画像を所有するものが第2レベルで、YYYを所有するものが第3レベルであるということですか? – MichaelThePotato