为什么我的TreeViewItem不会包含在我的示例代码中?
的Xaml:
using System;
using System.Collections.Generic;
namespace WpfAppTestScrollViewBehavior
{
public class MainWindowModel
{
public List<Level1> Level1s { get; } = new List<Level1>();
public MainWindowModel()
{
Level1s.Add(new Level1());
}
}
}
using System;
using System.Drawing.Text;
namespace WpfAppTestScrollViewBehavior
{
public class Level1
{
public bool IsSelected { get; set; }
public string Name { get; set; } = "a very long name in order to test text wrapping functionnality";
public InstalledFontCollection InstalledFontCollection { get; } = new InstalledFontCollection();
}
}
代码:
<TabItem Header="Test 2">
<ScrollViewer HorizontalScrollBarVisibility="Disabled">
<Grid HorizontalAlignment="Stretch" Background="LightPink">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<CheckBox Grid.Column="0"></CheckBox>
<TextBlock Grid.Column="1" Text="long name just for testing"
TextWrapping="Wrap" Margin="5,0,0,0"></TextBlock>
</Grid>
</ScrollViewer>
</TabItem>
只是为了防止快速错误答案:
您可以添加此代码,它可以正常工作:
render() {
const users = [
'tom': {
phone: '123',
email: 'hotmail'
},
'rob': {
phone: '321',
email: 'yahoo'
},
'bob': {
phone: '333',
email: 'gmail'
},
];
const list = users.map((user) =>
(<User
name={user}
phone={users.phone}
email={users.email}
/>),
);
return <ul>{list}</ul>;
}
以前工作代码的结果(就像我期望的那样):
答案 0 :(得分:0)
ColumnDefinition
默认为*,因此第1列中的TextBlock
将占用所有可用空间。
尝试使用MaxWidth
进行试验:<ColumnDefinition Width="Auto" MaxWidth="100"/>
修改
如果您不想使用预定义的Width
或MaxWidth
,请将Width
的{{1}}绑定到Grid
ActualWidth
像这样:
TabControl
我刚刚测试了这种方法并将<Grid Width="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type TabControl}}, Path=ActualWidth}" />
包裹好并在我调整窗口大小时重新包装它......如果TextBlock
的文本没有相对于右窗口边框的边距当以这种方式设置宽度时,您可以通过将TextBlock
的右边距设置为10或更大来修复它,具体取决于所需的填充...
答案 1 :(得分:0)
由于您尚未指定Width
,因此可向Width
提供<Textblock>
为什么我的TreeViewItem不会包含在我的示例代码中?
文字正在被包裹,但由于宽度不受限制,可见包裹
例如:
XAML:宽度:150个单位TextWrapping =&#34; NoWrap&#34;
<TextBlock Grid.Column="1" Text="{Binding Path=Name}" Width="150" Name="textblock1"
TextWrapping="NoWrap" Margin="10,0,0,0"></TextBlock>
XAML:宽度:150个单位TextWrapping =&#34; Wrap&#34;
<TextBlock Grid.Column="1" Text="{Binding Path=Name}" Width="150" Name="textblock1"
TextWrapping="Wrap" Margin="10,0,0,0"></TextBlock>
或强>
<Grid HorizontalAlignment="Stretch" Width="150" Background="LightGreen">
public string Name { get; set; } = ;