我有一个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>
单击复选框后,我将关闭“已检查”事件。
有没有办法拉出一个包含Expander'Header'的字符串?在这个例子中,我想拉出'expandder1'并将其分配给一个字符串。
我尝试了几种方法来做到这一点,但无法让它发挥作用。我使用TreeViewItems并使用Header.Parent.ToString()来完成同样的概念来获得我想要的东西。这里没有运气。这就是我所说的:
string child = ((TreeViewItem)((TreeViewItem)((TreeView)sender).SelectedItem)).Header.ToString();
有没有人知道我可以为Expander示例执行此操作的方法。谷歌搜索和搜索这个网站没有回报。这可能很容易,我只是忽略它。
感谢任何有想法的人。
答案 0 :(得分:0)
您可以从CheckBox轻松获取Expander。只需迭代到VisualTree并获得最顶级父级的Expander。我只是在下面的例子中只做了一个父母。
void MainWindow_Loaded(object sender, RoutedEventArgs e)
{
Expander expander = (Expander)checkBox.Parent;
if (expander != null)
{
string str = expander.Header.ToString();
Debug.WriteLine(str);
}
}
我希望它会对你有所帮助。