[英]Property binding to a Child UserControl
我有一個直到現在都無法解決的問題:我正在用C#/ WPF開發應用程序,並使用Caliburn.micro作為框架。 我有多個菜單面板(作為用戶控件),我想在整個應用程序中重用(例如,網格的數據過濾菜單)並顯示在<ContentControl />
。 根據應用程序的狀態,可以顯示不同的菜單面板。
現在,我可以設法使事件從菜單的View冒泡到父級的ViewModel。 但是我對屬性保持不變:例如,在過濾菜單中,應在立即應用過濾器時輸入文本。 在父級的“視圖”中具有菜單時,這很容易:我只是在屬性的setter方法中進行了過濾。
是否有可能使某種類似於“消息冒泡”(以cm為單位)的“冒泡”(必須為twoWay!)? 還是任何其他(更好的)MVVM兼容方法?
提前致謝!
一月
最小示例:
ParentView.xaml
<UserControl x:Class="App.ParentView">
<Grid>
<ContentControl x:Name="Toolbar" />
</Grid>
</UserControl>
ParentViewModel.cs
class ParentViewModel : Screen
{
public ParentViewModel()
{
Toolbar = new MenuViewModel();
}
private Screen _toolbar;
public Screen Toolbar
{
// get, set ...
}
public void LoadDifferentMenu()
{
this.Toolbar = new DifferentMenuViewModel();
}
}
MenuView.xaml
<UserControl x:Class="App.MenuView">
<Grid>
<TextBox x:Name="MyText" />
</Grid>
</UserControl>
MenuViewModel.cs
class MenuViewModel : Screen
{
public MenuViewModel()
{
}
private string _myText;
public string MyText
{
// get, set...
}
}
在caliburn micro中使用Event Aggregator
,以在MVVM中實現發布者和訂閱者模式。
通信基於消息類型,因此可以用於具有適當類型的單向或雙向通信。
請參閱鏈接https://caliburnmicro.com/documentation/event-aggregator了解實現細節。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.