摘要: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>
...