Когда я нажимаю на TreeViewItem, вызывается ItemClicked ().
C #:
public void ItemClicked(object sender, RoutedEventArgs e)
{
if (sender is TreeViewItem ClickedNode)
{
if (ClickedNode.HasItems) // Its a parent node
{
if (CtrlPressed)
{
var SelectedChild = TreeView.SelectedItem as TreeViewItem; // Have to do this manually since the sender is parent???
SelectedChild.Background = Brushes.Black;
SelectedChild.Foreground = Brushes.White;
}
}
}
В моем XAML я отключил IsSelected цвета по умолчанию:
<Grid>
<TreeView Name="TreeView">
<TreeView.ItemContainerStyle>
<Style TargetType="{x:Type TreeViewItem}">
<EventSetter Event="MouseLeftButtonUp"
Handler="ItemClicked"/>
</Style>
</TreeView.ItemContainerStyle>
<TreeView.Resources>
<SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}"
Color="Transparent" />
<SolidColorBrush x:Key="{x:Static SystemColors.HighlightTextBrushKey}"
Color="Black" />
<SolidColorBrush x:Key="{x:Static SystemColors.InactiveSelectionHighlightBrushKey}"
Color="Transparent" />
<SolidColorBrush x:Key="{x:Static SystemColors.InactiveSelectionHighlightTextBrushKey}"
Color="Black" />
</TreeView.Resources>
</TreeView>
</Grid>
Так что теперь, когда я управляю щелчком на узле, он будет отображаться не черным, а белым. Таким образом, прозрачность, кажется, переопределяет только что установленные Brushes.Black. Цвет переднего плана, кажется, проходит.
Первый вопрос: отправитель - не фактический узел, по которому щелкнули, а его родительский узел. Это почему? Я должен выяснить, если это родительский узел вручную, а затем вручную получить .SelectedItem. Как мне это исправить?
Второй вопрос: как исправить переопределение цветов? Я ничего не хочу, когда IsSelected вообще верно ...