Xaml 在UWP中ListView(嵌套在模板中)为空时显示消息
我正在为我的应用程序使用控件。它提供了一种在未选择任何项目时自定义详细信息面板的方法,但没有提供在没有项目可用时自定义主面板的方法 基本上,我想要完成的是显示一条消息(Xaml 在UWP中ListView(嵌套在模板中)为空时显示消息,xaml,mvvm,uwp,uwp-xaml,master-detail,Xaml,Mvvm,Uwp,Uwp Xaml,Master Detail,我正在为我的应用程序使用控件。它提供了一种在未选择任何项目时自定义详细信息面板的方法,但没有提供在没有项目可用时自定义主面板的方法 基本上,我想要完成的是显示一条消息(TextBlock),而不是默认的ListView,当后者没有项目时 我就是不能让它工作。我猜ListView嵌套在定义MasterDetailsView控件的ControlTemplate中 我静态地(在运行时没有任何更新)完成此操作的唯一方法是覆盖MasterDetailsView.Resources,其中我为ListView
TextBlock
),而不是默认的ListView
,当后者没有项目时
我就是不能让它工作。我猜ListView
嵌套在定义MasterDetailsView
控件的ControlTemplate
中
我静态地(在运行时没有任何更新)完成此操作的唯一方法是覆盖MasterDetailsView.Resources
,其中我为ListView
添加了一个Controltemplate
,如下标记所示:
<Page
...
xmlns:controls="using:Microsoft.Toolkit.Uwp.UI.Controls
...>
<controls:MasterDetailsView.Resources>
<Style TargetType="ListView" >
<Setter Property="Template" >
<Setter.Value>
<ControlTemplate TargetType="ListView">
<Grid>
<TextBlock
HorizontalAlignment="Center"
VerticalAlignment="Center"
Style="{StaticResource SubtitleTextBlockStyle}"
TextAlignment="Center"
Text="No content"/>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</controls:MasterDetailsView.Resources>
Obs:ViewModel
是MyMasterDetailsView
的一个属性,它有一个名为SampleItems
的observeCollection
,它从不为null
我还试图通过使用DataTriggerBehavior
和ChangePropertyAction
(来自Microsoft.Xaml.Interactions.Core)来解决这个问题,但也没有任何运气。我也不确定我做的是否正确
如果有人可以回答我,如果这是与MasterDetailsView
控制,我将不胜感激。或者举一个例子,说明我是如何使用上面的一种方法,甚至是另一种方法来实现这一点的
致以最良好的祝愿 应该注意,绑定集合的
计数
无法动态更改状态。虽然确实修改了Count
属性,但转换器将不会生效,因为未通知UI
如果您使用observateCollection
作为项目资源,则可以侦听observateCollection.CollectionChanged
事件,并更改事件回调中MasterDetailsView的显示
在此基础上,您可以通过派生MasterDetailsView
来创建自定义依赖项属性以更改显示
CustomMasterDetailsView.cs
公共类CustomMasterDetailsView:MasterDetailsView
{
公共CustomMasterDetailsView():base()
{
this.DefaultStyleKey=typeof(CustomMasterDetailsView);
}
公共可视性清空可视性
{
get{return(可见性)GetValue(EmptyTipVisibilityProperty);}
set{SetValue(EmptyTipVisibilityProperty,value);}
}
公共静态只读从属属性EmptyTipVisibilityProperty=
DependencyProperty.Register(“EmptyTypeVisibility”、typeof(可见性)、typeof(CustomMasterDetailsView)、new PropertyMetadata(可见性.折叠));
}
CustomMasterDetailsView.xaml(资源字典)
<TextBlock
HorizontalAlignment="Center"
VerticalAlignment="Center"
Style="{StaticResource SubtitleTextBlockStyle}"
TextAlignment="Center"
Text="No content"
Visibility="{Binding ElementName=MyMasterDetailsView, Path=ViewModel.SampleItems.Count, Converter={StaticResource VisibleWhenZeroConverter}}"/>