Wpf 列表框项目模板取决于项目值
在WPF、MVVC应用程序中,我有非常正常的列表框:Wpf 列表框项目模板取决于项目值,wpf,xaml,listbox,Wpf,Xaml,Listbox,在WPF、MVVC应用程序中,我有非常正常的列表框: <ListBox ItemsSource="{Binding Friends}"> </ListBox> 然后,列表的每个项目都使用以下数据模板: <DataTemplate DataType="{x:Type model:Friend}"> <Border BorderThickness="1" BorderBrush="Gray" Padding="3" Name="border"
<ListBox ItemsSource="{Binding Friends}">
</ListBox>
然后,列表的每个项目都使用以下数据模板:
<DataTemplate DataType="{x:Type model:Friend}">
<Border BorderThickness="1" BorderBrush="Gray" Padding="3" Name="border" Margin="3">
<StackPanel Grid.Row="1" Grid.Column="2" Orientation="Horizontal">
<TextBlock Name="DescriptionDTDataType" Text="{Binding Path=ConnectedUserID}" />
<TextBlock Name="StatusTitle" Margin="8,0,4,0">Status:</TextBlock>
<TextBlock Name="Status" Text="{Binding Path=Approved}" />
<Button Content="Approve" Command="{x:Static inf:Commands.ApproveUserConnection}" CommandParameter="{Binding}"></Button>
<Button Content="Disapprove" Command="{x:Static inf:Commands.DisapproveUserConnection}" CommandParameter="{Binding}"></Button>
</StackPanel>
</Border>
</DataTemplate>
地位:
问题是。。。我想隐藏Friend.Approved属性基础上的一个按钮。例如,如果Friend.Approved的值为“Approved”,我想隐藏按钮Approved,只显示按钮Dissaprove。另一方面,如果Friend.Approved的值为“unapproved”,那么我想要相反的值。如何做到这一点
谢谢。将按钮可见性属性绑定到<代码>已批准并使用值转换器将<代码>已批准转换为可见性值。将按钮可见性属性绑定到<代码>已批准并使用值转换器将<代码>已批准转换为可见性值。除了创建纯XAML溶液使用 只需将此添加到数据模板:
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding Approved}" Value="approved" >
<Setter TargetName="Approve" Property="Visibility" Value="Collapsed"/>
</DataTrigger>
<DataTrigger Binding="{Binding Approved}" Value="disapproved" >
<Setter TargetName="Disapprove" Property="Visibility" Value="Collapsed"/>
</DataTrigger>
</DataTemplate.Triggers>
并命名您的按钮:
<Button Name="Approve" Content="Approve" ...></Button>
<Button Name="Disapprove" Content="Disapprove" ...></Button>
但是,如果您想在多个数据模板中的多个位置重复使用此隐藏逻辑,最好是编写经批准的文本到可见性转换器。除了创建
只需将此添加到数据模板:
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding Approved}" Value="approved" >
<Setter TargetName="Approve" Property="Visibility" Value="Collapsed"/>
</DataTrigger>
<DataTrigger Binding="{Binding Approved}" Value="disapproved" >
<Setter TargetName="Disapprove" Property="Visibility" Value="Collapsed"/>
</DataTrigger>
</DataTemplate.Triggers>
并命名您的按钮:
<Button Name="Approve" Content="Approve" ...></Button>
<Button Name="Disapprove" Content="Disapprove" ...></Button>
但是,如果您想在多个数据模板中的多个位置重用此隐藏逻辑,最好编写批准的文本到可见性转换器