Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 按网格中的行启用/禁用按钮_C#_Wpf_Button_Grid_Datatrigger - Fatal编程技术网

C# 按网格中的行启用/禁用按钮

C# 按网格中的行启用/禁用按钮,c#,wpf,button,grid,datatrigger,C#,Wpf,Button,Grid,Datatrigger,我有以下代码。这里的listClear是一个对象,由ViewModel填充。我正在使用此对象的属性填充网格。在下面的代码中,我应该使用什么属性在DataTrigger中禁用按钮。当网格为空时,我希望禁用按钮,否则应该启用 <Button Grid.Column="3" Margin="2" Command="{Binding Path=ClearCommand}" Content="Clear"> <Button.Style> <Style

我有以下代码。这里的
listClear
是一个对象,由ViewModel填充。我正在使用此对象的属性填充
网格
。在下面的代码中,我应该使用什么属性在
DataTrigger
中禁用
按钮。当
网格
为空时,我希望禁用
按钮
,否则应该启用

<Button Grid.Column="3" Margin="2" Command="{Binding Path=ClearCommand}" Content="Clear">
    <Button.Style>
        <Style TargetType="Button">
            <Setter Property="IsEnabled" Value="True" />

                <Style.Triggers>
                    <DataTrigger Binding="{Binding Path=listClear}" Value="">
                        <Setter Property="IsEnabled" Value="False"/>
                    </DataTrigger>
                </Style.Triggers>
        </Style>
    </Button.Style>
</Button>

您可以使用
列表
计数
属性来表示空

例如:

public partial class MainWindow : Window 
{
    private ObservableCollection<string> myVar = new ObservableCollection<string>();

    public MainWindow()
    {
        InitializeComponent();
        MyList.Add("test");
    }

    public ObservableCollection<string> MyList
    {
        get { return myVar; }
        set { myVar = value; }
    }

    private void Button_Click(object sender, RoutedEventArgs e)
    {
        MyList.Clear();
    }

}
Xaml:


因此,如果
listClear
为空,则按钮将被禁用,空是指null还是仅为空(0)?lsitClear不是列表,如果使用
IEnumerable
<Window x:Class="WpfApplication11.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:local="clr-namespace:WpfApplication11"
        Title="MainWindow" Height="136.3" Width="208" x:Name="UI">
    <Grid DataContext="{Binding ElementName=UI}">
        <Button Content="Clear" Click="Button_Click">
            <Button.Style>
                <Style TargetType="Button">
                    <Setter Property="IsEnabled" Value="True" />
                    <Style.Triggers>
                        <DataTrigger Binding="{Binding Path=MyList.Count}" Value="0">
                            <Setter Property="IsEnabled" Value="False"/>
                        </DataTrigger>
                    </Style.Triggers>
                </Style>
            </Button.Style>
        </Button>
    </Grid>
</Window>
public class IsEmptyConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        if (value is IEnumerable)
        {
            var enumerable = (IEnumerable)value;
            foreach (var item in enumerable)
            {
                return false;
            }
        }
        return true;
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}
<Window x:Class="WpfApplication11.MainWindow"
        xmlns:local="clr-namespace:Namespace for converter"
....
....
 <Window.Resources>
        <local:IsEmptyConverter x:Key="IsEmptyConverter" />
 </Window.Resources>
....
....
   <DataTrigger Binding="{Binding Path=MyList, Converter={StaticResource IsEmptyConverter}}" Value="true">