2012-10-25 48 views
0

我有一個WPF擴展,如這樣的:WPF擴展,獲得頭名出一個子元素

<Expander Canvas.Left="251" Canvas.Top="425" Header="expander1" Height="100" Name="expander1"> 
     <Grid> 
      <StackPanel Margin="10,4,0,0"> 
       <CheckBox Margin="4" Content="Option 1" Checked="chk_DoThis" /> 
       <CheckBox Margin="4" Content="Option 2" Checked="chk_DoThis" /> 
       <CheckBox Margin="4" Content="Option 3" Checked="chk_DoThis" /> 
      </StackPanel> 
     </Grid> 
    </Expander> 

當點擊複選框,我把火關「經過」事件。

是否有某種方法可以取出包含擴展器「標題」的字符串?在這個例子中,我想拉出'expander1'並將其分配給一個字符串。

我嘗試了一些方法來做到這一點,並無法使其工作。我已經使用TreeViewItems並使用Header.Parent.ToString()來完成我想要的操作。這裏沒有運氣。這就是我指的是:

string child = ((TreeViewItem)((TreeViewItem)((TreeView)sender).SelectedItem)).Header.ToString(); 

有誰知道的一種方式,我可以爲我的擴展例子做到這一點。谷歌搜索和搜索這個網站已經沒有回報。這可能很簡單,我只是忽略它。

由於任何人有一些想法。

回答

0

你可以很容易地從該複選框的擴展。只需迭代到VisualTree並獲得最頂級的父級擴展器。我只是在下面的例子中只做了一個父項。

void MainWindow_Loaded(object sender, RoutedEventArgs e) 
     { 
      Expander expander = (Expander)checkBox.Parent; 

      if (expander != null) 
      { 
       string str = expander.Header.ToString(); 
       Debug.WriteLine(str); 
      } 
     } 

我希望它能幫到你。