내가 WPF에서 간단한 2 단계 트 리뷰 (MVVM 접근 방식을) 만들려고하고 있습니다. 내 첫 번째 수준에는 표준 데이터 템플릿이 있고, 두 번째 수준에서는 Template Selector를 사용하여 해당 속성 중 하나를 기반으로 각 항목의 모양을 변경할 수 있습니다. 다음은 WPF 트 리뷰 HierarchicalDataTemplate ItemTemplateSelector
내 트 리뷰 XAML입니다<Treeview ItemsSource={Binding ListA}>
<TreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding ListB}" ItemTemplateSelector={StaticResource TemplateSelector}>
<Textblock Text={Binding Name}/>
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
내 첫 번째 수준이다
<Textblock Text={Binding Name}/>
단지 TemplateSelector이 같은 것입니다 DataTemplate이 반환되는 이름 내 두 번째 수준에 대한
를 표시합니다
<DataTemplate x:Key="SomeKey">
<StackPanel Orientation="Horizontal">
<ViewBox>
-----
</ViewBox>
<TextBlock Text={Binding Name}/>
</StackPanel>
</DataTemplate>
두 번째 레벨의 ViewModel 이름은 두 번째 레벨입니다. 템플릿 선택기를 두 번 확인했는데 올바른 데이터 템플릿을 확실히 반환하고 있지만 표시되지 않습니다.
사람이 올바른 방향으로 날 지점시겠습니까?
편집 -이 내 템플릿 선택입니다 요청
에 따라 더 많은 코드를 추가
public class DataFieldsDataTemplateSelector : DataTemplateSelector
{
public DataTemplate AlphaTemplate { get; set; }
public ------
public ------
public DataFieldsDataTemplateSelector()
{
//This is getting the template from my ResourceDictionary
AlphaTemplate = (DataTemplate)dDictionary["alphaTemplate"];
}
public override DataTemplate SelectTemplate(object item,DependencyObject container)
{
//Somecode
return AlphaTemplate;
}
}
내 사전에 AlphaTemplate 내 템플릿 내 클래스 b를 입력이 이름을 포함
<DataTemplate x:Key="alphaTemplate">
<Grid >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="15"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Viewbox IsHitTestVisible="False">
<Path Data="M0,0L56.622002,0 56.622002,14.471 35.715,14.471 35.715,64 20.715,64 20.715,14.471 0,14.471z" Stretch="Uniform" Fill="{DynamicResource ButtonForegroundNormal}" VerticalAlignment="Center" Width="15" Height="15" Margin="0,0,0,0" RenderTransformOrigin="0.5,0.5">
<Path.RenderTransform>
<TransformGroup>
<TransformGroup.Children>
<RotateTransform Angle="0" />
<ScaleTransform ScaleX="1" ScaleY="1" />
</TransformGroup.Children>
</TransformGroup>
</Path.RenderTransform>
</Path>
</Viewbox>
<textBlock Text="{Binding Name}/>
</Grid>
</DataTemplate>
입니다 (텍스트) 및 데이터 형식 (텍스트) 필드 데이터 형식이 알파 인 경우 내 templateSelector에 AlphaTemplate을 반환하는 등
두 번째 수준에 항목을 추가하는 창에 작업 (dragDrop)이 있습니다. 템플릿 선택기가 데이터 유형에 따라 누락 된 항목에 대해 올바른 데이터 템플릿을 선택해야합니다.
내 기본 ViewModel에 TypeA 개체의 ICollectionView가 있고 각 TypeA ViewModel에 TypeB ViewModels의 ICollectionView가 포함되어 있습니다.
당신은 아무것도에게 나는이 같은이 코드를 디버깅 할 필요에 어떤 문제가 있는지 잘 모릅니다
을 난 그냥 괜찮 았는데 내 말에이 시나리오에는 시도. 템플릿 선택기 코드를 xaml과 코드 배후 및 ListB 클래스 형식으로 공유 할 수 있습니까 – Nitin
원래 질문에 더 많은 코드를 추가했습니다. 필요한 것이 있으면 알려주세요. – Krishna
잘 모르겠다. 나는 잘 해내려고 노력했다. 사전에서 템플릿을 설정하면 템플릿이 적용됩니다. 출력 창에 바인딩 예외가 있는지 알 수 있습니까? – Nitin