根据ItemsList

时间:2015-10-15 05:29:41

标签: xaml

<Button ToolTip="Duplicate" ToolTipService.ShowOnDisabled="True"
            Command="{Binding Path=DuplicateEntityCommand }"
            CommandParameter="{Binding ElementName=GridView, Path=SelectedItems}">
                <Image Style="{StaticResource toolbarImageStyle}" Source="/OnePlanner;component/Resources/Icons/duplicate.png"></Image>
                <Button.Style>
                    <Style TargetType="{x:Type Button}" BasedOn="{StaticResource {x:Type Button}}">                           
                        <Setter Property="IsEnabled" Value="False"/>
                        <Style.Triggers>
                            <MultiDataTrigger>
                                <MultiDataTrigger.Conditions>
                                    <Condition Binding="{Binding ElementName=RadGridView, Path=SelectedItems.Count}" Value="1"/>
                                    <Condition Binding="{Binding Path=IsItemListConstainsToyota}" Value="False"/>
                                </MultiDataTrigger.Conditions>
                                <Setter Property="IsEnabled" Value="True"/>
                            </MultiDataTrigger>
                        </Style.Triggers>                          
                    </Style>
                </Button.Style>
            </Button>

该按钮与GridView绑定。我必须根据SelectedItems中的选择启用此按钮。如果只选择网格中的一个项目并且该项目没有让一个值等于丰田的字符串,那么应该启用该按钮。 我在viewmodel中创建了一个与commandParameter一起使用的方法。

private bool IsItemListConstainsToyota(IList<object> itemList)
    {
        if (itemList.First() is CarList)
        {
            String carName= ((CarList)itemList.First()).carNameAsString;
            if (carName.Equals("Toyota"))
            {
                return true;
            }
        }
        return false;
    }

到目前为止我的代码不起作用。无论如何要在XAML中执行,或者我必须在viewModel中执行此操作?

1 个答案:

答案 0 :(得分:0)

对于Duplicate Entity Command,您可以为CanExecuteAction传递testFile = open("test.txt", "a+") 。如果这是错误的,那么您的按钮将被禁用。尝试将以下Action<object>传递给ICommand中的CanExecuteParameter。

Action<object>