我有一个尝试实现MVVM模式和Prism 2的WPF应用程序。我有一个Usercontrol订阅了从另一个Usercontrol触发的事件。我想切换订阅控件中少量子元素的可见性。事件被正确触发,即使我能成功地将数据绑定到某些元素。如何将Visibility或任何样式属性与ViewModel绑定并动态更改。如何从ViewModel更改WPF控件的可见性
8
A
回答
23
您可以在ViewModel中拥有布尔属性并将该属性绑定到控件的Visibility属性。由于您将asigning一个布尔值和可见性属性期待一个能见度枚举值,你将不得不使用BooleanToVisibilityConverter转换器进行转换,
<Style.Resources>
<BooleanToVisibilityConverter x:Key="booleanToVisibilityConverter" />
</Style.Resources>
<Image Visibility="{Binding Path=ShowImage,
Converter={StaticResource booleanToVisibilityConverter}}"/>
希望这有助于。
埃塞基耶尔Jadib
8
虽然添加布尔属性和使用值转换器的作品,我会建议加式能见度的属性您视图模型,例如
public Visibility ImageVisibility
{
get { return shouldShowImage ? Visibility.Visible : Visibility.Collapsed }
}
这种方法的优点是你不需要写一个转换器,你想在一个可视化的方式来表达(例如,对于库存水平,轮流标签红色,当它低于10的每个属性,你可以使用一次转换器,或者只是从虚拟机中暴露一个StockLabelBrush属性)
1
我知道这是一个老问题,但对于遇到此问题并找到答案的人有一个简单的解决方案。
在您的视图模型,创建一个 “可见性” 属性,像这样:
public Visibility ShowModifyButtons
{
get { return (Visibility)GetValue(ShowModifyButtonsProperty); }
set { SetValue(ShowModifyButtonsProperty, value); }
}
public static readonly DependencyProperty ShowModifyButtonsProperty =
DependencyProperty.Register("ShowModifyButtons", typeof(Visibility), typeof(FileMatchViewModel),
new UIPropertyMetadata(Visibility.Collapsed));
在XAML中,绑定到它,像这样:
<Button Focusable="False" Content="Save" Width="100" Margin="10" Visibility="{Binding ShowModifyButtons}"/>
现在,从您的视图模型,你可根据需要将ShowModifyButtons
设置为Visibility.Collapsed
或Visibility.Visible
。
相关问题
- 1. WPF控件可见性
- 2. ViewModel属性更改WPF DataTrigger
- 3. WPF如何从另一个窗口更改图像可见性
- 4. WPF如何从ViewModel访问控件
- 5. WPF ScrollViewer控件按钮的可见性
- 6. WPF:更新不更新屏幕的控件的可见性
- 7. 如何更改CascadingDropDown控件的可见性
- 8. 如何使用方向更改控制视图可见性(可见/不可见)?
- 9. 如何使用WPF中的绑定更改可见性
- 10. 更改图像在C#上的用户控件的可见性WPF
- 11. 如何更改视图的可见性?
- 12. 如何更改onclick的可见性
- 13. 如何更改NSCarbonWindow的可见性?
- 14. 如何更改Div的可见性
- 15. WPF TextBlock MouseUp更改ViewModel属性
- 16. 基于DataContext属性更改RowDetailsTemplate中子控件的可见性
- 17. 我可以更改单选按钮控件的可见性
- 18. 更改可见性属性
- 19. WPF - 基于数据的控件模板和控件可见性
- 20. 如何确定控件的可见性?
- 21. 如何从ViewModel更改ToggleButton?
- 22. 更改itemRemderer的可见性
- 23. 绑定的DataTemplate父项的可见性(可见性或可见性),以在ViewModel
- 24. 通过单击按钮来更改控件的可见性
- 25. 我无法更改控件在C#代码上的可见性
- 26. 用更改可见性重新加载控件的脚本
- 27. 根据bool值在JSP中更改控件的可见性
- 28. 如何使用c改变用户控件的div可见性#
- 29. C#:控件的可见性
- 30. WPF控制可见性w/ICommand&OnPropertyChanged
不知何故,这并没有为我工作。我在Usercontrol.Resources部分声明了转换器,并使用了绑定,如您在注释中所述。 – Raj 2009-09-13 03:04:45
对不起我的错误。这工作。谢谢。 – Raj 2009-09-13 04:19:51