我有一个简单的任务,但有点困惑。所以,我有一个ListView在我的一些窗口,我有一个自定义的ListView项目,我把在单独的文件调用“ListViewItem.xaml”,我做了一个自定义的样式,我的ListView在“Styles.Constrols.ListView.Xaml”。我的“MyListViewItem.xaml”看起来像这样:
<UserControl x:Class="SomeApp.Views.MyListViewItem"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:DesignHeight="40"
d:DesignWidth="400"
Margin="0">
<StackPanel Orientation="Horizontal">
<Button Height="40" Width="60" Content="{Binding Id}" Foreground="Chartreuse" />
<ComboBox Margin="2 0 0 0" ItemsSource={Binding Values}/>
</StackPanel>
</UserControl>
我的“Styles.Constrols.ListView.Xaml”是:
<Style x:Key="Style.ListViews.MainWindow.CenterPanel" TargetType="{x:Type ListView}">
<Setter Property="ItemTemplate">
<Setter.Value>
<DataTemplate>
<views:MyListViewItem/>
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
目前一切正常,但当我尝试将MyListViewItem的类型从UserControl更改为ListViewItem时,我在这一行得到一个错误
<DataTemplate>
<views:MyListViewItem/>
</DataTemplate>
属性“visual tree”不支持“ListViewItem”类型的值
当我做这个小把戏时:
<DataTemplate>
<ListViewItem
xmlns....>
<StackPanel Orientation="Horizontal">
<Button Height="40" Width="60" Content="{Binding Id}" Foreground="Chartreuse" />
<ComboBox Margin="2 0 0 0" ItemsSource={Binding Values}/>
</StackPanel>
</ListViewItem >
</DataTemplate>
它变得很好。这种行为的意义是什么?
所以我的问题如下
- 是否有必要使用UserControl的所有元素,我们想把从窗口布局(为了更好的可读性)到单独的.xaml文件?
- ListViewItem和UserControl都是ContentControl的子控件,为什么我不能使用ListViewItem,当我把它的布局放在单独的文件?
1条答案
按热度按时间gk7wooem1#
以下应该可以工作。
MyListViewItem.xaml:
MyListViewItem.xaml.cs:
是否有必要使用UserControl的所有元素,我们想把从窗口布局(为了更好的可读性)到单独的.xaml文件?
不知道
ListViewItem和UserControl都是ContentControl的子控件,为什么我不能使用ListViewItem,当我把它的布局放在单独的文件?
你可以的