DataTemplate
을 사용자 정의하려는 간단한 TreeView
이 있습니다. 원하는대로 표시되지만 TreeViewItem
을 선택할 때 TreeView
의 텍스트를 클릭하면 강조 표시가 작동하지 않습니다.TreeView에서 사용자 정의 DataTemplate 강조 표시
소스가 똑바로 앞으로 꽤, 그래서 난 그냥 스타일링 연결 누락 같은데요 : 내가 텍스트의 왼쪽에 단지 선택한다면, 그것은 작동
을 XAML
<TreeView x:Name="treeView"
ItemsSource="{Binding TreeViewItems}"
Grid.Row="0">
<TreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding Path=MenuItems}">
<TreeViewItem Header="{Binding Header}">
<TreeViewItem.InputBindings>
<MouseBinding MouseAction="LeftClick"
Command="{Binding Command}" />
</TreeViewItem.InputBindings>
</TreeViewItem>
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
은 내가 XAML이 추가 시도했다, 그러나 그것은 도움이 일부러 :
<TreeView.ItemContainerStyle>
<Style TargetType="{x:Type TreeViewItem}"
BasedOn="{StaticResource {x:Type TreeViewItem}}" />
</TreeView.ItemContainerStyle>
를
TreeViewModel TreeView
는 ItemsSource
의 각 항목에 대한 TreeViewItem
을 만드는, 그래서 TreeView
가 이미 당신을 위해 만든 하나에 있지 둥지 또 다른 TreeViewItem
을 할 수있다
public class MenuItemViewModel : BaseNotifyModel
{
public MenuItemViewModel()
{
MenuItems =
new ObservableCollection<MenuItemViewModel>();
}
public String Header
{
get
{
return Get<String>();
}
set
{
Set(value);
}
}
public ICommand Command
{
get
{
return Get<ICommand>();
}
set
{
Set(value);
}
}
public ObservableCollection<MenuItemViewModel> MenuItems
{
get
{
return Get<ObservableCollection<MenuItemViewModel>>();
}
set
{
Set(value);
}
}
}
왜 TreeViewItem의 데이터 템플릿에 TreeViewItem을 넣고 있습니까? 왜 두 개의 중첩 된 트리보기 항목이 필요합니까? –
템플릿에 일반 TextBlock을 넣고 다른 TreeViewItem은 넣지 마십시오. – Evk
ItemContainerStyle에서 입력 바인딩을 수행하고 Header를 스타일의 MenuItemViewModel.Header에 바인드하고 데이터 템플릿에서 ' 를 버리면됩니다. 또는 Evk에서 말하는 것처럼 TextBlock 또는 Label을 사용하십시오. –