奇怪的一个。
我在WPF表单上有一个contentcontrol,它会在其中加载一个datatemplate。
这显示正常(手写摘要代码,因此忽略错误/缺少属性):
<DataTemplate>
<Label Content="Found datatemplate" />
</DataTemplate>
但这会呈现空白
<DataTemplate>
<Expander Header="Why dont I show">
<Label Content="Found datatemplate" />
</Expander>
</DataTemplate>
我已将扩展器设置为visibile,isexpanded为true等等,无论它根本不渲染。
困惑 - 这是不可能的吗?
答案 0 :(得分:0)
我最近做了类似你所描述的事情,它对我有用。我有一个ItemsControl绑定到一组视图模型,每个视图模型包含一个表示自定义内容的UserControl。我实现了ItemsControl.ItemTemplate以在Expander中显示自定义控件,如下所示:
<ItemsControl Margin="0,20,0,0" ItemsSource="{Binding ControlItems}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Border Margin="0,0,0,0"
BorderBrush="#E7E7E7"
BorderThickness="0,1,0,0"
Padding="20,0">
<Expander Foreground="#E7E7E7"
IsExpanded="{Binding Path=IsExpanded,
Mode=TwoWay}">
<Expander.Header>
<Grid>
<TextBlock HorizontalAlignment="Left"
VerticalAlignment="Center"
FontSize="24"
Text="{Binding Title}" />
</Grid>
</Expander.Header>
<DockPanel>
<ScrollViewer MinHeight="250">
<ContentControl Content="{Binding Control}" />
</ScrollViewer>
</DockPanel>
</Expander>
</Border>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
这就是我的视图模型:
public class SidePanelControlItem : ModelBase
{
private bool _isExpanded;
public SidePanelControlItem(UserControl control)
{
if (control == null) { throw new ArgumentNullException("control");}
Control = control;
}
public string Title { get; set; }
public UserControl Control { get; private set; }
public bool IsExpanded
{
get { return _isExpanded; }
set
{
_isExpanded = value;
OnPropertyChanged("IsExpanded");
}
}
}