2017-03-16 37 views
0

所以我要申請和另一個子窗體我的組合框SelectionChanged事件被觸發:WPF:爲什麼我的圖表控件創建之前

public partial class SubForm: MetroWindow... 

這裏是我是從我的主要form打開我Sub form

SubForm subForm = new SubForm(); 
subForm.ShowDialog(); 

裏面我Sub form我有這個chart控制:

<telerik:RadCartesianChart 
    x:Name="chart" /> 

而且Combobox

<ComboBox 
    Name="cbInterfaces" 
    ItemsSource="{Binding Path=(my:MyClass.MachineInterfaces)}" 
    SelectedIndex="0" 
    SelectionChanged="cbInterfaces_SelectionChanged"/> 

所以我注意到後InitializeComponent方法Sub form製作的通訊資料的權利後,該代碼是進入我ComboboxSelectionChanged事件,我chart控制仍然null,尚未建立。 所以我不能再我Combobox和改變選擇再次(在這種情況下,我chart NOT NULL)使用它,直到使用

回答

1

你可以只從事件處理程序返回,如果立即窗口或RadCartesianChart尚未初始化或加載:

private void cbInterfaces_SelectionChanged(object sender, SelectionChangedEventArgs e) 
{ 
    if (!this.IsLoaded || chart == null || !chart.IsLoaded) 
     return; //do nothing 

    //your code... 
} 

是,但問題是,這種形式創建並打開後,我想立刻見到我的鼻菸在我的聊天,而不是再次改變我的選擇組合框...

然後調用InitializeComponent()方法之後編程設置SelectedIndex屬性:

public partial class SubForm : Window 
{ 
    public SubForm() 
    { 
     InitializeComponent(); 
     cbInterfaces.SelectedIndex = 0; 
    } 

    private void cbInterfaces_SelectionChanged(object sender, SelectionChangedEventArgs e) 
    { 
     //... 
    } 
} 

<ComboBox 
    Name="cbInterfaces" 
    ItemsSource="{Binding Path=(local:MyClass.MachineInterfaces)}" 
    SelectionChanged="cbInterfaces_SelectionChanged"/> 
+0

是的,但問題是,這種形式創建並打開後,我想立刻見到我的鼻菸在我的聊天而不是再次更改我的組合框選擇,在我的主窗體中我有相同的控制器(組合框和聊天),並且在此表單創建後我的圖表不是空,爲什麼我有這種區別? – user979033

+0

然後在調用InitializeComponent()方法之後以編程方式設置SelectedIndex屬性。看到我編輯的答案。 – mm8

相關問題