ViewModal載入的時機

  • 790
  • 0

摘要:ViewModal載入的時機

 

在 xaml 中,設定 ComboBox 的 SelectedIndex 結果並沒有效,結果是因為指定 ViewModal 給 View.DataContext 的時機不對造成的。

<CombxBox SelectedIndex="4"  ItemSource="{Binding EQRStatusList}" DisplayMemberPath="DisplayText" SelectedValuePath="Value" SelectedValue="{Binding Path=EQRValue, Mode=TwoWay}" IsSynchronizedWithCurrentItem="True" />

 

若是在 MainWindow的建構子中 Create ViewModal ,然後再指給 Window 的DataContext ,這樣的話,由於畫面早已畫完了, MainWindow 的建構子來不及把 ViewModal 建立起來丟給 MainWindow,這樣的話,當畫面在建立時,ComboBox跟本沒有來源給它建立 Item,空空如也的,當然指定 SelectedIndex 沒有效的。

public partial class UserControl1:UserControl
{
  public UserControl1()
  {
    InitializeComponent();
    ViewModal.ViewModal vm = new ViewModal.ViewModal();
    this.DataContext = vm;
  }
}

 

 

若是在 xaml 中,宣告 namespace ,然後指定 DataContext 的話,這樣在畫面建立之前就已經先建立 ViewMoal ,那 ComboBox 也有來自 ViewModal 的資料可以建立它的 ListItem 了。

<UserControl
  x:Class="View.UserControl1"
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
  xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
  xmlns:local="clr-namespce:ViewModal;assembly=ViewModal"
  mc:Ignorable="d" Height="600" Width="1000">
  <UserControl.DataContext>
    <Local:ViewModal/>
  </UserControl.DataContext>
...