我在代码中动态设置datacontext。我希望屏幕上的按钮可以启用/禁用,具体取决于是否DataContext == null
。我能做到这一点的代码时,我分配DataContext的,但它会更好,如果我可以绑定像:)wpf如何绑定到DataContext的存在?
8
A
回答
13
您应该能够使用DataTrigger
上的按钮样式,以禁用按钮时DataContext
为空。另一个选项是将IsEnabled
属性绑定到DataContext
,如果DataContext
为空,则使用值转换器返回false
,否则使用true
。
随着触发:
<Button>
<Button.Style>
<Style TargetType="{x:Type Button}">
<Style.Triggers>
<DataTrigger Binding="{Binding Path=DataContext, RelativeSource={RelativeSource Self}}" Value="{x:Null}">
<Setter Property="IsEnabled" Value="false"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>
随着转换器:
转换器:
public class DataContextSetConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return value != null;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
而且使用它
<UserControl.Resources>
<local:DataContextSetConverter x:Key="dataContextSetConverter"/>
</UserControl.Resources>
...
<Button IsEnabled="{Binding Path=DataContext, RelativeSource={RelativeSource Self}, Converter={StaticResource dataContextSetConverter}}"/>
4
这应做到:
<Button Content="ButtonName">
<Button.Style>
<Style TargetType="{x:Type Button}">
<Style.Triggers>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource Self}, Path=DataContext}" Value="{x:Null}">
<Setter Property="Visibility" Value="Collapsed" />
</DataTrigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>
相关问题
- 1. WPF绑定:绑定到DataContext的父代
- 2. WPF DataContext绑定不发生
- 3. WPF将ComboBox选择绑定到DataContext
- 4. 如何将控件的DataContext绑定到WPF中其内容的DataContext?
- 5. 如何将命令绑定到祖先datacontext? WPF :: MVVM
- 6. 绑定到DataContext的子类
- 7. WPF绑定的DataContext在XAML到视图模型代码
- 8. 如何绑定到嵌套在WPF中的DataContext对象深处的列表
- 9. 在WPF中,如何从包含ListBox的DataTemplate中将数据绑定到Window DataContext?
- 10. 未设置DataContext时WPF绑定问题
- 11. 如何正确绑定WPF中的datacontext RelativeSource?
- 12. WPF:如何绑定和更新显示器的DataContext
- 13. 将DataContext绑定到ValidationRule
- 14. 将UserControl绑定到NULL DataContext
- 15. DataGridComboBoxColumn绑定到DataGrid DataContext
- 16. 将ViewModel绑定到View DataContext
- 17. DataContext绑定
- 18. wpf - 将datacontext绑定到单例类的静态属性
- 19. 在DataTemplate中绑定到父DataContext
- 20. 如何将页面的datacontext用于其他绑定时绑定到WPF依赖项属性?
- 21. DataContext,DependencyProperties和绑定
- 22. 在WPF中可以绑定到我的DataContext中的属性的属性?
- 23. 从TabControl的DataTemplate绑定到主DataContext
- 24. 绑定到DataContext中的项目数
- 25. 绑定到父DataContext的资源
- 26. 绑定到datacontext之外的属性
- 27. 从usercontrol绑定dependencyproperty到它的datacontext
- 28. 如何绑定到WPF中的DataGrid
- 29. 在XAML绑定的DataContext用的DataContext在代码中设置
- 30. 绑定使用的DataContext
这样的转换器可能看起来如何? – katit 2011-06-10 23:58:58