HierarchicalDataTemplate で 2textblocks
を取得し、両方からテキストをコピーしたいと考えています。チェックボックスのクリック/チェック中に、テキストがリストに更新されます。
関数は、1 つのテキストブロックからテキストを取得しています。
両方のテキストブロックからテキストを取得してリストに更新するにはどうすればよいですか?
private List<string> selectedNames = new List<string>();
private void TreeView_Checked(object sender, RoutedEventArgs e)
{
CheckBox chkBox = sender as CheckBox;
StackPanel stackPanel = chkBox.Parent as StackPanel;
TextBlock txtBlock = FindVisualChild<TextBlock>(stackPanel);
bool isChecked = chkBox.IsChecked.HasValue ? chkBox.IsChecked.Value : false;
if (isChecked)
{
selectedNames.Add(txtBlock.Text );
}
}
CheckBox 取得テキスト関数:
private static T FindVisualChild<T>(DependencyObject obj) where T : DependencyObject
{
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(obj); i++)
{
DependencyObject child = VisualTreeHelper.GetChild(obj, i);
if (child != null && child is T)
return (T)child;
else
{
T childOfChild = FindVisualChild<T>(child);
if (childOfChild != null)
return childOfChild;
}
}
return null;
}
WPF HierarchicalDataTemplate:
<StackPanel Orientation="Horizontal" >
<CheckBox Name="checkBoxTree" Checked="TreeView_Checked" Unchecked="checkBoxTree_Unchecked"
Margin="0,4,0,0" Style="{DynamicResource CheckBoxStyle1}"/>
<TextBlock Text="{Binding XPath=@Name, Mode=TwoWay}" />
<TextBlock >
<Hyperlink NavigateUri="{Binding XPath=@WebSite}" RequestNavigate="Hyperlink_RequestNavigate">
<TextBlock Text="{Binding XPath=@WebSite}" />
</Hyperlink>
</TextBlock>
</StackPanel>