我认为我有一个非常简单的目标,但似乎无法实现.
我想要实现的是拥有一个带有标题的ItemsControl(因为我不希望列表的选择功能).优选地是静态头部.
目前我正在使用网格作为标题,然后将该网格复制到ItemsControl的ItemTemplate(DataTemple)中,然后将它们一个放在网格中.它有点工作,但它并不总是很好地排队等.
然后我找到了HeaderedItemsControl,我认为这是一个绝妙的主意,但不能让它工作,它根本不显示标题.我试过以下几点;
我在Blend的一个小项目中完成了这一切,然后将它移到生产应用程序中,我只是使用了我创建的简单示例数据源.
我可能完全错过了这艘船,但任何帮助将不胜感激.
我目前的代码如下,首先是我的HeaderedItemsControl
<HeaderedItemsControl Header="HeaderedItemsControl"
ItemsSource="{Binding Collection, Mode=Default}"
ItemTemplate="{DynamicResource ItemsControlDataTemplate}"
HeaderTemplate="{DynamicResource ItemsControlHeaderDataTemplate}"/>
Run Code Online (Sandbox Code Playgroud)
然后我有一个按预期工作的ItemTemple
<DataTemplate x:Key="ItemsControlDataTemplate">
<Grid d:DesignWidth="268">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.754*"/>
<ColumnDefinition Width="0.246*"/>
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding Property1, Mode=Default}" TextWrapping="Wrap" d:LayoutOverrides="Height" HorizontalAlignment="Stretch" Margin="0" />
<TextBlock Text="{Binding Property2, Mode=Default}" TextWrapping="Wrap" d:LayoutOverrides="Height" Grid.Column="1" HorizontalAlignment="Left" Margin="0" />
</Grid>
</DataTemplate>
Run Code Online (Sandbox Code Playgroud)
然后是反对其职业道德的标题,我已经尝试使用绑定和TextBlock.Text属性中的纯文本
<DataTemplate x:Key="ItemsControlHeaderDataTemplate">
<Grid d:DesignWidth="268">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.754*"/>
<ColumnDefinition Width="0.246*"/>
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding Header.Header1, Mode=Default, Source={StaticResource SampleDataSource6}}" TextWrapping="Wrap" HorizontalAlignment="Stretch" Margin="0"/>
<TextBlock Text="{Binding Header.Header2, Mode=Default, Source={StaticResource SampleDataSource6}}" TextWrapping="Wrap" d:LayoutOverrides="Height" Grid.Column="1" …
Run Code Online (Sandbox Code Playgroud) 我有以下代码:
<Window.Resources>
<DataTemplate x:Key="SectionTemplate" >
<TextBlock Text="{Binding Path=Name}" />
</DataTemplate>
</Window.Resources>
<Grid >
<Border>
<HeaderedItemsControl Header="Top1"
ItemsSource="{Binding Path=List1}"
ItemTemplate="{StaticResource SectionTemplate}"/>
</Border>
</Grid>
Run Code Online (Sandbox Code Playgroud)
public class MainWindow
{
public List<Item> List1
{
get { return list1; }
set { list1 = value; }
}
public MainWindow()
{
list1.Add(new Item { Name = "abc" });
list1.Add(new Item { Name = "xxx" });
this.DataContext = this;
InitializeComponent();
}
}
public class Item
{
public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
由于某种原因,Items
渲染,但没有标题.
我正在使用HeaderedItemsControl来显示人名.我还想显示一个包含3个标签的标题:标题,名字和姓氏.当名称很短时,这很容易.但是,如果名字很长,则标题不再与名称匹配.我怎样才能解决这个问题?谢谢!