WPF中根据条件显示控件
- wpf中的显示
- Flag为true,则显示按钮,否则显示文字提示
public class CocReportModel
{
public string Customer { get; set; }
public string Dn { get; set; }
public string CocPath { get; set; }
public bool Flag { get; set; }
}
<Window x:Class="DemoCoc.Views.MainView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:vm="clr-namespace:DemoCoc.ViewModels"
Title="DemoCOCReport-V1.0.0"
Width="800"
Height="450"
WindowStartupLocation="CenterScreen"
mc:Ignorable="d">
<Window.DataContext>
<vm:MainViewModel></vm:MainViewModel>
</Window.DataContext>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="2*"></RowDefinition>
<RowDefinition Height="8*"></RowDefinition>
</Grid.RowDefinitions>
<Border BorderBrush="SkyBlue" BorderThickness="5"></Border>
<Border Grid.Row="1" BorderBrush="DeepSkyBlue" BorderThickness="5"></Border>
<StackPanel Orientation="Horizontal" VerticalAlignment="Center" HorizontalAlignment="Center" >
<Label Content="DN:" FontWeight="Bold"></Label>
<TextBox Width="150" Text="{Binding Dn}" Margin="10 0"></TextBox>
<Button Content="查询" Command="{Binding QueryCommand}" ></Button>
</StackPanel>
<DataGrid Grid.Row="1" ColumnWidth="*" AutoGenerateColumns="False" CanUserAddRows="False" ItemsSource="{Binding CocReportModels}" d:ItemsSource="{d:SampleData}" Background="LightGray">
<DataGrid.Columns>
<DataGridTemplateColumn Header="操作" Width="140" >
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ContentControl>
<ContentControl.Style>
<Style TargetType="ContentControl">
<Style.Triggers>
👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇
<!-- 当 Flag 为 false 时,隐藏按钮组,显示 "No Report" -->
<DataTrigger Binding="{Binding Flag}" Value="False">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ContentControl">
<TextBlock TextAlignment="Center" Text="{Binding CocPath}" />
</ControlTemplate>
</Setter.Value>
</Setter>
</DataTrigger>
<!-- 当 Flag 为 true 时,显示按钮组,隐藏 "No Report" -->
<DataTrigger Binding="{Binding Flag}" Value="True">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ContentControl">
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center">
<Button Content="下载" Width="40" Height="20" Margin="5 2"
CommandParameter="{Binding CocPath}"
Command="{Binding DataContext.DownloadCommand, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=DataGrid}}"
IsEnabled="{Binding Flag}"/>
<Button Content="重新生成" Width="70" Height="20" Margin="5 2"
CommandParameter="{Binding Dn}"
Command="{Binding DataContext.GenerateCommand, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=DataGrid}}"
IsEnabled="{Binding Flag}"/>
</StackPanel>
</ControlTemplate>
</Setter.Value>
</Setter>
</DataTrigger>
👆👆👆👆👆👆👆👆👆👆👆👆👆👆👆👆👆👆👆👆👆👆👆👆👆👆👆👆
</Style.Triggers>
</Style>
</ContentControl.Style>
</ContentControl>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn Width="1*" Header="Customer" Binding="{Binding Customer}"/>
</DataGrid.Columns>
</DataGrid>
</Grid>
</Window>