正如标题所示,我想在选择DataGrid(即对象)中的一行时启用一个Button(已禁用)。
从我读到的内容来看,WPF似乎有触发器来检查当centain属性改变时它可以做什么呢?
但是在Silverlight中,我似乎只能使用GoToState。我尝试制作两种状态:已选择和未选中。但是Button的IsEnabled属性似乎没有从UnSelected状态记录到Selected状态......
另一个问题是DataGrid唯一适合的事件是SelectionChanged,但我如何确保用户确实选择了一行呢?
如果我在code-behide中执行所有操作,我可以检查SelectionChangedEvent并启用按钮,但无论如何都要使用Expression Blend完成上述所有操作?我试图尽可能地将所有内容都放在xaml中。
由于
答案 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的静态资源中声明转换器。