我确实有以下结构:
<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;
我该怎么做才能解决这个问题? 如果您需要更多信息或我的错误描述不清楚,请不要犹豫。
更新 怎么样:
文本太长时的行为: 并在底部显示滚动条..
答案 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>