我有一個嘗試實現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