Существует команда выбора , если вы хотите использовать командную строку:
echo off
choice /M "You have been idle for more than 10 minutes. Shutdown"
if %ERRORLEVEL% equ 1 (shutdown /S /F /T 60)
if %ERRORLEVEL% equ 2 (echo no was selected)
ERRORLEVEL
начинается с 1. Так из примеров, когда вы выполняете choice /?
:
choice /C YNC /M "Press Y for Yes, N for No or C for Cancel."
«Y» равно 1, «N» равно 2 и т. Д.
В Powershell все проще, но у вас будет сообщение «по умолчанию»:
Stop-Computer -Confirm
Прямой ответ на Ваш вопрос - то, что нет никакого свойства уровня в WPF.
Нет никого к отношениям между средствами управления winforms и управлением wpf. Поскольку базовая архитектура и использование полностью отличаются в обоих. В WPF Вы свяжете иерархические данные (вид LinkedList Datastructure) к TreeView и определите HeirarchicalDataTemplate к Treeview. Свойство ItemTemplate
Учитывая вопрос:-
таким образом, когда я нажимаю узел, как я знаю, какой уровень это? есть ли обходное решение?
Вот возможное обходное решение:-
Если у Вас есть ссылка на Управление в Визуальном Дереве, возможно от a Click
событие затем, которое можно использовать то управление для разработки, какой уровень это находится в структурном виде путем вызывания функции как это, которое я использовал в прошлом.
private int FindTreeLevel(DependencyObject control)
{
var level = -1;
if (control != null)
{
var parent = VisualTreeHelper.GetParent(control);
while (!(parent is TreeView) && (parent != null))
{
if (parent is TreeViewItem)
level++;
parent = VisualTreeHelper.GetParent(parent);
}
}
return level;
}
Этот метод будет идти по VisualTree и рассчитывать сколько TreeViewItem
средства управления, которые это находит прежде, чем остановиться, когда это находит TreeView
Управление.
Если Вам нужно это доступное в XAML, например, a DataTrigger
из a HierarchicalDataTemplate
затем Вы могли упаковать это в к a IValueConverter
класс
<Window.Resources>
<local:TreeLevelConverter x:Key="treeLevelConverter"/>
<HierarchicalDataTemplate DataType="{x:Type local:MyType}" >
...
<Grid ... >
<TextBlock x:Name="MyControl" ... />
...
</Grid>
<HierarchicalDataTemplate.Triggers>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource Self}, Converter={StaticResource treeLevelConverter}}" Value="0" >
<Setter TargetName="MyControl" Property="Background" Value="Red"/>
</DataTrigger>
</HierarchicalDataTemplate.Triggers>
</HierarchicalDataTemplate>
</Window.Resources>
Затем используйте следующий Преобразователь
public class TreeLevelConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
var level = -1;
if (value is DependencyObject )
{
var parent = VisualTreeHelper.GetParent(value as DependencyObject );
while (!(parent is TreeView) && (parent != null))
{
if (parent is TreeViewItem)
level++;
parent = VisualTreeHelper.GetParent(parent);
}
}
return level;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new System.NotImplementedException();
}
}