使用Expression Blend在DataGrid中选择行时启用按钮?

时间:2011-10-08 22:18:16

标签: silverlight expression-blend

正如标题所示,我想在选择DataGrid(即对象)中的一行时启用一个Button(已禁用)。

从我读到的内容来看,WPF似乎有触发器来检查当centain属性改变时它可以做什么呢?

但是在Silverlight中,我似乎只能使用GoToState。我尝试制作两种状态:已选择和未选中。但是Button的IsEnabled属性似乎没有从UnSelected状态记录到Selected状态......

另一个问题是DataGrid唯一适合的事件是SelectionChanged,但我如何确保用户确实选择了一行呢?

如果我在code-behide中执行所有操作,我可以检查SelectionChangedEvent并启用按钮,但无论如何都要使用Expression Blend完成上述所有操作?我试图尽可能地将所有内容都放在xaml中。

由于

1 个答案:

答案 0 :(得分:1)

您是否尝试过使用普通的Element绑定?例如:

<DataGrid x:Name="MyGrid" />
<Button IsEnabled="{Binding Path=SelectedItem, ElementName=MyGrid, Converter={StaticResource MyNullToBoolConverter}}" />

以及转换器的一个例子:

class MyNullToBoolConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        return value != null ? true : false;
    }

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}

然后,您只需在页面或Button的静态资源中声明转换器。