我有一个使用此XAML的WPF应用程序...
<ListView
ScrollViewer.HorizontalScrollBarVisibility="Hidden"
ScrollViewer.VerticalScrollBarVisibility="Hidden"
ItemsSource="{Binding HTMLControlNames}">
<ListView.ItemTemplate>
<DataTemplate>
<Button Content="{Binding Name}"></Button>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
绑定是正确的,ObservableCollection属性中有实现INPC的数据。
我添加了Expression Dark Theme,它也可以使用,但这是上面标记的输出:
按钮在那里,他们只是没有显示文本... BTW按钮的数量等于集合中的项目数。
这是ViewModel中的属性,单步执行显示集合中有项目(正确的)。
public ObservableCollection<ControlName> HTMLControlNames
{
get { return _HTMLControlNames; }
set
{
_HTMLControlNames = value;
PropChanged("HTMLControlNames");
}
}
最后是ControlName类:
public class ControlName
{
public string Name { get; set; }
}
如果我不使用ExpressionDark.xaml,则会显示内容!
以下是更多信息:控件的顶部显示确定... 如果我不使用DataTemplate,就像在这个控件的上半部分那样按钮就可以了。
这是默认的控制模板(只是带有内容演示者的网格)..
答案 0 :(得分:1)
您所看到的认为是ListView
控件中的按钮实际上是标题区域。通过在标题中添加列,您可以更清楚地看到这一点:
<ListView.View>
<GridView>
<GridViewColumn Header="Test" />
</GridView>
</ListView.View>
列表视图项目实际上是此标题下方的浅灰色条纹。
我在模板列表视图方面没有太多经验(我通常使用列表框),但在您使用的主题中,列表视图似乎是以这样的方式模板化它基本上忽略了项目模板。您可以通过使用这样的愚蠢模板来看到它:
<ListView.ItemTemplate>
<DataTemplate>
<Rectangle Fill="Orange" Width="20" Height="20" />
</DataTemplate>
</ListView.ItemTemplate>
您将看到列表视图中不会出现橙色矩形,即使您绑定的集合中包含元素也是如此。
我不太确定如何解决这个问题。也许有更多模板列表视图控件经验的人可以插入。
答案 1 :(得分:0)
感谢Stephen,到目前为止这是解决方案:
<ListView.View>
<GridView>
<GridViewColumn x:Name="xHtmlControlcol"
Header="Filter For:"
Width="{Binding ActualWidth,
ElementName=XListView,
Mode=OneWay}">
<GridViewColumn.CellTemplate>
<DataTemplate>
<Button Content="{Binding Name}"
Width="{Binding ActualWidth,
ElementName =XListView,
Mode=OneWay}" BorderThickness="1,0" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
它产生了这个:请注意,左边距还有一个小问题,我现在还不知道如何修复。
对此的诀窍在于使用数据绑定时: