C# 扩展器仅在加载文件后展开

C# 扩展器仅在加载文件后展开,c#,wpf,expander,C#,Wpf,Expander,图片: 我希望我的扩展器仅在加载文件后才展开。请帮我怎么做。我正在使用命令加载按钮。YourView.xaml <Expander Grid.Row="1" IsExpanded="False" Background="Yellow"> <Grid Background="Yellow"> <Grid.ColumnDefinitions> <ColumnDefinitio

图片:



我希望我的扩展器仅在加载文件后才展开。请帮我怎么做。我正在使用命令加载按钮。

YourView.xaml

<Expander Grid.Row="1" IsExpanded="False" Background="Yellow">
           <Grid Background="Yellow">
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="100" />
                <ColumnDefinition Width="100" />
                <ColumnDefinition Width="100" />
                <ColumnDefinition Width="100" />
                <ColumnDefinition Width="100" />
            </Grid.ColumnDefinitions>
            <TextBlock Grid.Column="0" Text="Filters" />
            <CheckBox Grid.Column="1" Content="A"/>
            <CheckBox Grid.Column="2" Content="B"/>
            <CheckBox Grid.Column="3" Content="C"/>
        </Grid>
   </Expander>

以下是将标志绑定到属性IsEnabled的解决方案:

例如,在加载文件时设置Flag=True

MainWindow.xaml.cs:

public class IntToBoolConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        bool isExpand = false;
        if (value != null && value.GetType().GetProperties().Length > 0)
            return isExpand = true;
        return isExpand;
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        return true;
    }
}
MainWindow.xaml:

public partial class MainWindow : INotifyPropertyChanged
{
    public MainWindow()
    {
        InitializeComponent();
        DataContext = this;
    }

    private void ButtonClick(object sender, RoutedEventArgs e)
    {
        Flag = true;
        OnPropertyChanged("Flag");
    }

    public bool Flag { get; set; }

    public event PropertyChangedEventHandler PropertyChanged;
    protected void OnPropertyChanged(string property)
    {
        PropertyChanged(this, new PropertyChangedEventArgs(property));
    }
}

:
:
我已经玩过IsEnabled,但您可以使用IsExpanded属性绑定:

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="2*" />
        <RowDefinition Height="1*" />
    </Grid.RowDefinitions>
    <Expander Grid.Row="0" IsExpanded="False" Background="Yellow" Margin="50,50,200,50" >
        <Expander.Style>
            <Style>
                <Setter Property="Expander.IsEnabled" Value="False" />
                <Style.Triggers>
                    <DataTrigger Binding="{Binding Path=Flag}" Value="True">
                        <Setter Property="Expander.IsEnabled" Value="True" />
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </Expander.Style>
        <Grid Background="Yellow">
          :
          :
        </Grid>
    </Expander>
    <Button Grid.Row="1" Click="ButtonClick" Content="Click Me" />
</Grid>

即使两者都是,如果您愿意:

<Expander Grid.Row="0"  Background="Yellow" Margin="50,50,200,50" >
    <Expander.Style>
        <Style>
            <Setter Property="Expander.IsExpanded" Value="False" />
            <Style.Triggers>
                <DataTrigger Binding="{Binding Path=Flag}" Value="True">
                    <Setter Property="Expander.IsExpanded" Value="True" />
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </Expander.Style>


在这里,当您单击按钮时,扩展器将展开/启用

您可以根据项目来源、项目数量展开扩展器。创建转换器并传递项源计数,如下所示,**IsExpanded=“{Binding Items.count,converter={StaticResource intToBoolConverter}}”**。在转换器中,如果项目计数大于零,则返回true,否则返回false。您能稍微扩展一下您的答案吗,我是wpf新手。我需要包括哪些内容IntToBoolConverter@VijayBhargavG,如果这个答案是有用的,请接受我的答案。这个答案会帮助别人。
<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="2*" />
        <RowDefinition Height="1*" />
    </Grid.RowDefinitions>
    <Expander Grid.Row="0" IsExpanded="False" Background="Yellow" Margin="50,50,200,50" >
        <Expander.Style>
            <Style>
                <Setter Property="Expander.IsEnabled" Value="False" />
                <Style.Triggers>
                    <DataTrigger Binding="{Binding Path=Flag}" Value="True">
                        <Setter Property="Expander.IsEnabled" Value="True" />
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </Expander.Style>
        <Grid Background="Yellow">
          :
          :
        </Grid>
    </Expander>
    <Button Grid.Row="1" Click="ButtonClick" Content="Click Me" />
</Grid>
<Expander Grid.Row="0"  Background="Yellow" Margin="50,50,200,50" >
    <Expander.Style>
        <Style>
            <Setter Property="Expander.IsExpanded" Value="False" />
            <Style.Triggers>
                <DataTrigger Binding="{Binding Path=Flag}" Value="True">
                    <Setter Property="Expander.IsExpanded" Value="True" />
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </Expander.Style>
    <Expander Grid.Row="0"  Background="Yellow" Margin="50,50,200,50" >
        <Expander.Style>
            <Style>
                <Setter Property="Expander.IsEnabled" Value="False" />
                <Setter Property="Expander.IsExpanded" Value="False" />
                <Style.Triggers>
                    <DataTrigger Binding="{Binding Path=Flag}" Value="True">
                        <Setter Property="Expander.IsEnabled" Value="True" />
                        <Setter Property="Expander.IsExpanded" Value="True" />
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </Expander.Style>