第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

如何將TabControl綁定到ViewModels集合?

如何將TabControl綁定到ViewModels集合?

如何將TabControl綁定到ViewModels集合?基本上我在我的MainViewModel.cs中:ObservableCollection<TabItem> MyTabs { get; private set; }但是,我需要以某種方式不僅能夠創(chuàng)建選項(xiàng)卡,而且還可以在維護(hù)MVVM的同時(shí)加載選項(xiàng)卡內(nèi)容并將其鏈接到適當(dāng)?shù)囊晥D模型?;旧希胰绾螌⒂脩艨丶鳛閠abitem的內(nèi)容加載并將該usercontrol連接到適當(dāng)?shù)膙iewmodel。使這個(gè)困難的部分是ViewModel不應(yīng)該構(gòu)造實(shí)際的視圖項(xiàng),對(duì)吧?或者可以嗎?基本上,這是MVVM合適的:UserControl address = new AddressControl(); NotificationObject vm = new AddressViewModel(); address.DataContext = vm; MyTabs[0] = new TabItem() {     Content = address; }我只是問,因?yàn)槲艺赩iewModel中構(gòu)建一個(gè)View(AddressControl),這對(duì)我來說聽起來像MVVM禁忌。
查看完整描述

3 回答

?
回首憶惘然

TA貢獻(xiàn)1847條經(jīng)驗(yàn) 獲得超11個(gè)贊

在Prism中,您通常會(huì)將選項(xiàng)卡控件設(shè)置為一個(gè)區(qū)域,這樣您就不必控制綁定的選項(xiàng)卡頁面集合。

<TabControl 
    x:Name="MainRegionHost"
    Regions:RegionManager.RegionName="MainRegion" 
    />

現(xiàn)在可以通過將自身注冊(cè)到MainRegion區(qū)域來添加視圖:

RegionManager.RegisterViewWithRegion( "MainRegion", 
    ( ) => Container.Resolve<IMyViewModel>( ).View );

在這里你可以看到Prism的特色。視圖由ViewModel實(shí)例化。在我的情況下,我通過Inversion of Control容器(例如Unity或MEF)解析ViewModel。ViewModel通過構(gòu)造函數(shù)注入獲取View注入,并將自身設(shè)置為View的數(shù)據(jù)上下文。

另一種方法是將視圖的類型注冊(cè)到區(qū)域控制器中:

RegionManager.RegisterViewWithRegion( "MainRegion", typeof( MyView ) );

使用此方法允許您稍后在運(yùn)行時(shí)創(chuàng)建視圖,例如通過控制器:

IRegion region = this._regionManager.Regions["MainRegion"];

object mainView = region.GetView( MainViewName );
if ( mainView == null )
{
    var view = _container.ResolveSessionRelatedView<MainView>( );
    region.Add( view, MainViewName );
}

由于您已注冊(cè)View的類型,因此視圖將放置在正確的區(qū)域中

查看完整回答
反對(duì) 回復(fù) 2019-08-02
?
慕婉清6462132

TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超2個(gè)贊

我有一個(gè)轉(zhuǎn)換器來解耦UI和ViewModel,這就是以下幾點(diǎn):

<TabControl.ContentTemplate>
    <DataTemplate>
        <ContentPresenter Content="{Binding Tab,Converter={StaticResource TabItemConverter}"/>
    </DataTemplate></TabControl.ContentTemplate>

Tab是我的TabItemViewModel中的枚舉,TabItemConverter將其轉(zhuǎn)換為真實(shí)的UI。

在TabItemConverter中,只需獲取值并返回所需的用戶控件。


查看完整回答
反對(duì) 回復(fù) 2019-08-02
  • 3 回答
  • 0 關(guān)注
  • 872 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)