0

私は次の構造を持っています:

<UniformGrid HorizontalAlignment="Stretch"  Grid.Row="0" VerticalAlignment="Top" Columns="6"  DockPanel.Dock="Right"  >
  <StackPanel HorizontalAlignment="Stretch">
      <DockPanel Background="#FF393939"  >
          <Label Content="{lex:Loc Site}" Foreground="#FFE0E0E0"/>
      </DockPanel>
      <ListBox Height="300" ItemsSource="{Binding Sites.View}" DisplayMemberPath="Name.ActualTranslation">
      </ListBox>
  </StackPanel>...

私のUniformGridのこれらのスタックパネルは、メインウィンドウ(またはビュー)全体に広げる必要があります...それでも、標準幅よりも多くの場所を必要とする長い文字列を持つアイテムがリストボックスにある場合、文字列を自動調整し、スクロールする必要があります垂直に。

コンテンツに十分な場所がない場合、リストビューの幅を広げたくありません。また、このビューが配置されている MainWindow にスクロールビューアーがあります...

均一なグリッドがメインウィンドウのように同じ幅のままになるようにするにはどうすればよいですか...

私はすでに MainWindow に名前を付けて、幅を次のようなものにバインドしようとしました: Width="{Binding ElementName=MainWindow, Path=ActualWdith}"..

エラーが発生しますが:

Cannot find source for binding with reference 'ElementName=MainWindow'. BindingExpression:Path=ActualWdith; DataItem=null;

この問題を解決するにはどうすればよいですか? 詳細情報が必要な場合、またはエラーの説明が明確でない場合は、お気軽にお問い合わせください。

更新: それがどうあるべきか: ここに画像の説明を入力

テキストが長すぎる場合の動作: ここに画像の説明を入力 スクロールバーが下部に表示されます..

4

2 に答える 2

1

名前で WPF オブジェクトにアクセスしようとしている場合はx:Key="name"、上記のコードに示されていなかったものが必要です。

<Window x:Name="MainWindow" ....

または、正しいタイプのオブジェクトが見つかるまでツリーを上って戻ることもできます。

Width="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type MainWindow}, Path=ActualWidth}"
于 2013-07-31T14:56:58.963 に答える
0

または、テキストの表示方法を変更して幅を制限することもできます

<ListBox Height="300" ItemsSource="{Binding Sites.View}" DisplayMemberPath="Name.ActualTranslation">
  <ListBox.ItemTemplate>
    <DataTemplate>
      <TextBlock Text="{Binding}" TextWrapping="Wrap" MaxWidth="200"/>
    </DataTemplate>
  </ListBox.ItemTemplate>
</ListBox>
于 2013-07-31T15:04:11.890 に答える