WPF禁用ListBox在统一网格中自动调整大小

时间:2013-07-31 13:48:20

标签: wpf xaml

我确实有以下结构:

<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(或View)上展开......如果Listbox中有一个项目有一个更长的字符串,需要比标准宽度更多的位置,它会自动调整字符串和i必须垂直滚动。

如果内容不够,我不希望listview获得宽度。 我的MainWindow中还有一个滚动查看器,其中放置了此视图...

我能做些什么,均匀网格保持与MainWindow -...

相同的宽度

我已经尝试给MainWindow命名并将宽度绑定到这样的内容:Width="{Binding ElementName=MainWindow, Path=ActualWdith}" ..

虽然我收到错误:

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

我该怎么做才能解决这个问题? 如果您需要更多信息或我的错误描述不清楚,请不要犹豫。

更新 怎么样: enter image description here

文本太长时的行为: enter image description here 并在底部显示滚动条..

2 个答案:

答案 0 :(得分:1)

如果您尝试按名称访问WPF对象,则需要在上面的代码中显示x:Key="name",即

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

或者,您可以向上走回树,直到找到正确类型的对象

Width="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type MainWindow}, Path=ActualWidth}"

答案 1 :(得分: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>
相关问题