2016-05-18 17 views
1

XAMLを使用してアプリケーションウィンドウに<ScrollViewer>と表示しています。私が何をしたいのか、動的に幅を設定されているXAML- ScrollViewerのサイズを動的に設定する方法は?

<Window> 
    <Grid> 
     <TabControl> 
      <TabItem> 
       <StackPanel> 
        <Grid> 
         <ScrollViewer x:Name="scroller" HorizontalAlignment="Right" VerticalScrollBarVisibility="Auto" Margin="39,10,0,0" VerticalAlignment="Top" Height="244" Width="450"> 
          <TextBox x:Name="infoPane" TextWrapping="Wrap" Text="nothing" IsReadOnly="True" /> 
         </ScrollViewer> 
        </Grid> 
       </StackPanel> 
      </TabItem> 
     </TabControl> 
    </Grid> 
</Window> 

:現時点では、私は静的<ScrollViewer>のサイズを指定しています(つまりはそれをアプリケーションの実行中に変更することができない設定値を、与えます) <ScrollViewer>の幅はアプリケーションウィンドウの幅の半分になるため、常に表示されるコンテンツの半分がカバーされます。

ユーザは、ウィンドウの角またはエッジの1つをドラッグすることによってアプリケーションウィンドウのサイズを変更することができるので、<ScrollViewer>が占めるディスプレイの領域は自動的に常にアプリケーションウィンドウの幅の半分になりますあれは。

<ScrollViewer>Widthプロパティの値を動的に設定できる方法はありますか?

答えて

2

現在のウィンドウの呼び出しWindow.Current.Bounds.Width/.Heightの幅と高さを取得します。ちょうど2つに分けて、あなたが望むものを得る。値を動的に設定することも簡単です:​​。 2列のグリッドを両方ともWidth="*"で作成し、その中の1つにScrollViewerを配置して、まったく同じ効果を得ることができます。

EDIT

は、ここで私は私の答えの第二部では意味したものです:私は私のXAMLの完全な構造を含めるように私の質問を更新しました

<Window> 
<Grid> 
    <TabControl> 
     <TabItem> 
      <StackPanel> 
       <Grid> 
        <Grid.ColumnDefinitions> 
         <ColumnDefinition Width="*" /> 
         <ColumnDefinition Width="*" /> 

        </Grid.ColumnDefinitions> 
        <ScrollViewer x:Name="scroller" Grid.Column="0" HorizontalAlignment="Stretch" VerticalScrollBarVisibility="Auto" Margin="39,10,0,0" VerticalAlignment="Top" Height="244" Width="{Binding ActualWidth,RelativeSource={RelativeSource 
          Mode=FindAncestor, AncestorType=Grid}}"> 
         <TextBox x:Name="infoPane" TextWrapping="Wrap" Text="nothing" IsReadOnly="True" /> 
        </ScrollViewer> 
       </Grid> 
      </StackPanel> 
     </TabItem> 
    </TabControl> 
</Grid> 
</Window> 
+0

どこで 'Window.Current.Bounds.Width'を呼び出しますか? XAMLまたはC#では? XAMLでは、 'Width =" Window .... "は、' 'プロパティ 'width'の値が不正であるというエラーを返します。 C#では、 'MainWindow.'を実行すると、オートコンプリートに表示される唯一の 'width'プロパティは、依存関係プロパティを識別する' ActualWidthProperty'と依存関係プロパティを識別する 'WidthProperty'です。実際にウィンドウの幅の値を返します。 – someone2088

+0

私はあなたが焦点を当てるべき私の答えの第二の部分を意味した方法のコードを投稿しました! – WPMed

+0

ねえ、更新をありがとう - 私は今試してみましょう。しかし、ちょうどそれを見て、それについて考えて - 私はちょうど私のメインウィンドウの表示を2つに分割し、それらのいずれかに ''を表示することを意味していない...それは違いがない''の実際のサイズには、表示されるスペースのサイズを変更するだけです。つまり、アプリケーションを実行しているときに私がこれを行い、ウィンドウを手動でサイズ変更した場合、 ' 'のサイズは' width'プロパティを設定した値に固定されます。 – someone2088

0

ああ私の悪い、私は誤解しました:あなたはあなたの全体のXAMLを与えることができますか?

動的方法は次のとおりです。 width="x*" ここで、xは数値です。 しかし、あなたがXAML全体を与えるなら、私は例を作ることができます。

編集:

<Grid> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="1*" /> 
     <ColumnDefinition Width="1*" /> 
    </Grid.ColumnDefinitions> 

    <ScrollViewer x:Name="scroller" VerticalScrollBarVisibility="Auto"> 
     <TextBox x:Name="infoPane" TextWrapping="Wrap" Text="nothing" IsReadOnly="True" /> 
    </ScrollViewer> 

</Grid> 
+0

。 – someone2088

+0

回答が編集されました! –

関連する問題