怪奇物语

怪奇物语

首页 新随笔 联系 管理

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>
posted on 2025-03-15 08:00  超级无敌美少男战士  阅读(41)  评论(0)    收藏  举报