我有一個嘗試實現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. ViewModel屬性更改WPF DataTrigger
- 2. 如何使用方向更改控制視圖可見性(可見/不可見)?
- 3. 如何更改Div的可見性
- 4. 如何更改NSCarbonWindow的可見性?
- 5. 如何更改視圖的可見性?
- 6. 更改圖像在C#上的用戶控件的可見性WPF
- 7. 基於DataContext屬性更改RowDetailsTemplate中子控件的可見性
- 8. WPF TextBlock MouseUp更改ViewModel屬性
- 9. 更改可見性屬性
- 10. 如何從ViewModel更改ToggleButton?
- 11. WPF - 基於數據的控件模板和控件可見性
- 12. 如何確定控件的可見性?
- 13. 更改itemRemderer的可見性
- 14. 通過單擊按鈕來更改控件的可見性
- 15. 我無法更改控件在C#代碼上的可見性
- 16. 用更改可見性重新加載控件的腳本
- 17. 如何使用c改變用戶控件的div可見性#
- 18. 佈局更改可見性
- 19. 點擊更改小部件可見性
- 20. 如何使用webbrowser控件將div可見性變爲可見?
- 21. 如何更改WPF控件模板
- 22. WPF Canvas中形狀的可見性更改
- 23. WPF停止可見性更改的故事板
- 24. 如何在ASP.NET DataList控件中設置控件的可見性?
- 25. 如何更改ViewModel屬性的屬性並使更改反映在綁定控件上?
- 26. 如何重用WPF用戶控件,但更改綁定屬性?
- 27. 向WPF控件添加條件可見性工具提示
- 28. 如何從MVVM WPF中的子項更改父控件?
- 29. 如何從該控件的外部更改WPF控件的佈局
- 30. WPF在可見性更改時觸發動畫?
不知何故,這並沒有爲我工作。我在Usercontrol.Resources部分聲明瞭轉換器,並使用了綁定,如您在註釋中所述。 – Raj 2009-09-13 03:04:45
對不起我的錯誤。這工作。謝謝。 – Raj 2009-09-13 04:19:51