Wpf 如何在Datatemplate中放置扩展器?
奇怪的一个 我在WPF表单上有一个contentcontrol,这将在其中加载一个datatemplate 这显示得很好(手写摘要代码,因此忽略错误/缺少属性):Wpf 如何在Datatemplate中放置扩展器?,wpf,Wpf,奇怪的一个 我在WPF表单上有一个contentcontrol,这将在其中加载一个datatemplate 这显示得很好(手写摘要代码,因此忽略错误/缺少属性): 然而,这将显示为空白 <DataTemplate> <Expander Header="Why dont I show"> <Label Content="Found datatemplate" /> </Expander> </DataTem
然而,这将显示为空白
<DataTemplate>
<Expander Header="Why dont I show">
<Label Content="Found datatemplate" />
</Expander>
</DataTemplate>
我已经将扩展器设置为visibile,isexpanded设置为true等,无论它呈现什么都不会呈现
困惑-这是不可能的吗?我最近做了一些类似于你所描述的事情,它对我起了作用。我有一个ItemsControl,它绑定到一组视图模型,每个视图模型都包含一个表示自定义内容的UserControl。我实现了ItemsControl.ItemTemplate,以便在扩展器中显示自定义控件,如下所示:
<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>
这应该行得通,也许发布真实代码而不是近似值?魔鬼总是在那些我们懒得提及的小细节中。我隐约记得内容绑定需要传递给孩子们。你能试试亨克吗?他会玩得更多,因为匿名需要很长时间。我已经在空白表格中试过了,而且效果很好。我的是一个用户控件,模板也可以按类型切换,其他内容可以正常工作,只是扩展器不会显示。grrrr!!奎师那-提出了一个“内容设置不止一次”的错误,我们用空白的形式尝试了它,它成功了这就是我的意思。不断开发那个空白应用程序,直到你能重现问题。我们不太可能找到答案。
<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");
}
}
}