我有一個TreeView包含不同級別TreeViewItem's 的混合物。
下面完美地作業:
<TreeViewItem Tag="Link" MouseDoubleClick="TreeViewItem_MouseDoubleClick">
<TreeViewItem.Header>
<StackPanel Orientation="Horizontal">
<materialDesign:PackIcon Kind="Link" Margin="0 0 5 0"/>
<TextBlock Text="Link"/>
</StackPanel>
</TreeViewItem.Header>
</TreeViewItem>
但是當涉及到他們有一個TreeViewItem.Header我無法MouseDoubleClick正確設定事件時,請參見下文:
<TreeViewItem IsExpanded="True" MouseDoubleClick="TreeViewItem_MouseDoubleClick">
<TreeViewItem.Header>
<StackPanel Orientation="Horizontal">
<materialDesign:PackIcon Kind="HelpCircleOutline" Margin="0 0 5 0"/>
<TextBlock Text="Help" FontWeight="Bold"/>
</StackPanel>
</TreeViewItem.Header>
<ContentControl>
<StackPanel Orientation="Horizontal">
<materialDesign:PackIcon Kind="BookOpenOutline" Margin="0 0 5 0"/>
<TextBlock Text="Technical Guide"/>
</StackPanel>
</ContentControl>
</TreeViewItem>
上面的問題是它在幫助標題和技術指南子項上觸發。
我無法將事件添加到<StackPanel>它,因為它不支持它,所以我用它包裹<ContentControl>并嘗試將事件添加到它,但它似乎根本沒有觸發。
有什么方法可以只讓“技術指南”觸發事件,而且在Tag=""我檢查TreeViewItem_MouseDoubleClick事件中的那個值時按照第一個代碼片段添加屬性?
編輯
根據要求提供MouseDoubleClick事件代碼:
private void TreeViewItem_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
if (sender is TreeViewItem item)
{
var header = item.Tag as string;
switch (header)
{
case "Link":
//Open new window code
break;
}
}
uj5u.com熱心網友回復:
我無法將事件添加到 中,
<StackPanel>因為它不支持它......
是的,如果您將Background屬性設定為Transparent并處理MouseLeftButtonDown事件并檢查以下ClickCount屬性MouseButtonEventArgs:
private void StackPanel_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
if (e.ClickCount == 2)
{
//double-click detected
}
}
XAML:
<StackPanel Orientation="Horizontal"
Background="Transparent"
MouseLeftButtonDown="StackPanel_MouseLeftButtonDown">
<TextBlock Text="Technical Guide"/>
</StackPanel>
uj5u.com熱心網友回復:
而不是從樹視圖中捕獲點擊,為什么不從文本塊中捕獲點擊?
<TreeViewItem IsExpanded="True" >
<TreeViewItem.Header>
<StackPanel Orientation="Horizontal">
<materialDesign:PackIcon Kind="HelpCircleOutline" Margin="0 0 5 0"/>
<TextBlock Text="Help" FontWeight="Bold" MouseDown="TextBlock_MouseDown"/>
</StackPanel>
</TreeViewItem.Header>
<StackPanel Orientation="Horizontal">
<materialDesign:PackIcon Kind="BookOpenOutline" Margin="0 0 5 0"/>
<TextBlock Text="Technical Guide" MouseDown="TextBlock_MouseDown"/>
</StackPanel>
</TreeViewItem>
private void TextBlock_MouseDown(object sender, System.Windows.Input.MouseButtonEventArgs e)
{
// simulate doubleclick
if (e.LeftButton == MouseButtonState.Pressed && e.ClickCount == 2)
{
System.Diagnostics.Debug.WriteLine((TextBlock)sender.Text);
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/357669.html
