簡體   English   中英

使用Prism綁定viewmodel屬性以查看代碼背后的屬性

[英]Binding viewmodel property to view property in code behind using Prism

我使用C#7,Prims 6.3和SyncFusion Grid Control來開發我的應用程序( https://help.syncfusion.com/wpf/grid/getting-started )。
接下來的問題是:網格控件只是“模擬” WPF樣式,因此我可以將其添加到XAML中: <ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto" Grid.Row="0" CanContentScroll="True"> <syncfusion:GridControl x:Name="WorksheetGrid"/> </ScrollViewer>

但是我無法將其與包含表所有數據的viewmodel屬性綁定。
所以我使用EventAggregator發送新數據以從viewmodel進行查看:

`

private void OnSelectWorksheetEvent(WorksheetSelectedEventArgs args) {
  _regionManager.RequestNavigate(RegionNames.RootRegion, "WorksheetView");
  _eventAggregator.GetEvent<WorksheetDataRecievedEvent>().
      Publish(new WorksheetDataEventArgs(_model.ReadRowHeader(args.WshCode),
      _model.ReadColHeader(args.WshCode), _model.ReadCells(args.WshCode)));
}

`

但這是丑陋的結構,因為我在后面的視圖代碼中復制了所有數據結構:

`

void OnWorksheetDataRecievedEvent(WorksheetDataEventArgs args) {
            WorksheetGrid.QueryCellInfo -= new GridQueryCellInfoEventHandler(gridControl_QueryCellInfo);

            ClearWorksheetData();
            ClearWorksheetModel();

            RowHeaderHelper.RowHeader = args.RowHeader;
            ColHeaderHelper.ColHeader = args.ColHeader;
            CellHelper.Cells = args.Cells;

            WorksheetGrid.Model.RowCount = RowHeaderHelper.HeaderSize() + 1;
            WorksheetGrid.Model.ColumnCount = ColHeaderHelper.HeaderSize() + 1;

            WorksheetGrid.QueryCellInfo += new GridQueryCellInfoEventHandler(gridControl_QueryCellInfo);
            WorksheetGrid.Model.ResizeRowsToFit(GridRangeInfo.Row(0), GridResizeToFitOptions.IncludeHeaders);
        }

`

我了解從視圖直接訪問viewmodel屬性是反mvvm的,但限於SyncFusion gui組件

所以我的問題是:1.如何從后面的視圖代碼訪問viewmodel的屬性? 2.當更改viewmodel中的屬性時,如何在后面的視圖代碼中觸發某些功能?

謝謝。

自從我使用Prism以來已經有一段時間了(是的,您當前的解決方案是非常抗mvvm的,我建議您嘗試包裝有問題的控件),但是我認為這適用於:

  1. 在視圖中, this.DataContext應該是視圖模型。

  2. 我將在視圖模型中注冊PropertyChanged事件以獲取其值的更新(視圖模型通常實現INotifyPropertyChanged接口)。

希望能幫助到你!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM