2016-04-06 10 views
3

私はWPFで新しく、これは非常に疑問な質問です。WPFで幅と高さを定義するカスタム式

StackPanel(たとえば)を選択したときのVisual Studio - >プロパティでは、プロパティWidthを持っています。このプロパティでは、右の小さな正方形をクリックするとメニューが開きます。メニューのオプションの一つは、だからここに「カスタム式」

である私の質問です:
Mathmatic表現の幅と高さのベースを定義することは可能ですか?

<StackPanel Width="{Parent.Width - 100}"> 
</StackPanel> 

EDIT
私はウィンドウよりも100ピクセル下の幅を持っている必要がありますのStackPanelを作成するつもりだので、私はこれを聞いていますのよ。ウィンドウサイズが変更されたとき、StackPanelはこのルールに対応するように変更する必要があります。

+0

いいえカスタムバインディングを作成することはできますが、それはおそらく過度の方法です。 X/Yの問題が発生しています。実際の解はYです。あなたはこの想像上の表現型で解決しようとしている問題を[編集]し、説明しなければなりません。 – Will

+0

コンバータとパスの親の幅。しかし、StackPanelをGrid.Columnに配置すると、列の幅が取得されます。 – Paparazzi

答えて

2

デフォルトでは変換できません。コンバーターを使用する必要があります。もちろん、特にWPFで新しくなったので、そのような簡単な操作のたびにコンバーターを書くことは、あなたに苦労するかもしれません。したがって、その苦痛を軽減するためのカスタムマークアップ拡張があります。たとえば、https://quickconverter.codeplex.com/(ただし、他にもあります)。彼らと、それはそれのようになります。

<Window x:Class="WpfApplication2.MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"       
    xmlns:qc="http://QuickConverter.CodePlex.com/" 
    mc:Ignorable="d" 
    Title="MainWindow" Height="500" Width="500" x:Name="self"> 
<Grid x:Name="LayoutRoot"> 
    <Rectangle Fill="Red" 
      Width="{qc:Binding '$P-100', P={Binding ElementName=self, Path=ActualWidth}}" 
      Height="{qc:Binding '$P-100', P={Binding ElementName=self, Path=ActualHeight}}" /> 
</Grid> 
</Window> 

ここでは、明示的な変換器を使用せずに、100-親「自己」素子寸法の矩形の幅と高さが結合しました。

1

親要素の幅/高さへのバインディングでこれを行うことができます。しかし、そうする代わりに、ダイナミックレイアウトを使用して、子コンテナをマージン(例:50px)で定義し、その幅が親コンテナよりも100px小さくなるようにしましょう。

したがって、「別の要素に基づいて計算された値を設定することはできますか?」という理論的な質問に対する答えです。はい、必要な計算を実行するコンバータを使用してバインディングを使用します。

「親コンテナを考慮に入れたレスポンシブなレイアウトを作成する簡単な方法はありますか?答えははいです、希望の効果を得るために、マージン、パディング、アライメントを持つコンテナのコンポジションを使用します。

関連する問題