私は、正方形である必要があり、与えられたスペースをできるだけ埋める必要があるユーザーコントロールを設計しています(コンテキストを与えるために、これはチェックボードです)。
私のユーザーコントロールは次のようになります。
<Grid>
<!-- My 8 lines / colums, etc. , sized with "1*" to have equal lines -->
</Grid>
ここで、「このグリッドは、どの部屋を拡張する必要があるかに関係なく、正方形でなければなりません」と簡単に言いたいと思います。
無駄に解決策を試しました:
実際には行と列の名前が追加されているため、を使用できません
UniformGrid
。そのため、先頭のヘッダーの行と列のサイズが異なります。私がそれを使用する
Viewbox
とUniform
、すべてが台無しになります。クラシックを使ってみました
<Grid Height="{Binding RelativeSource={RelativeSource Self}, Path=Width}"> ... </Grid>
ただし、プロパティを手動で設定した場合にのみ機能しWidth
ます。それ以外の場合、この制約は無視されます。
結論
私は考えがわからないので、このコントロールはさまざまな場所(テンプレート、ゲームなど)で使用される可能性があるため、手動で設定Width
/手動で設定することは避けたいと思います。Height
ListItem
提案からの解決策:
いくつかのコードビハインドで解決策が利用可能です。XAMLのみのソリューションは見つかりませんでした。
グリッドは次のようになりました。
<Grid SizeChanged="Board_FullControlSizeChanged">...</Grid>
そして、イベントハンドラーは次のとおりです。
private void Board_FullControlSizeChanged(object sender, SizeChangedEventArgs args)
{
double size = Math.min (args.NewSize.Height, args.NewSize.Width);
((Grid)sender).Width = size;
((Grid)sender).Height = size;
}