WPF DataTemplate에서 DataType 속성을 사용하려면 어떻게 해야 합니까?
제가 뭔가 잘못하고 있는 것은 분명하지만 DataType 속성을 사용할 때 HierarchicalDataTemplate(또는 DataTemplate만)가 작동하지 않는 것 같습니다.문제를 나타내는 최단 WPF 어플리케이션을 작성했습니다.
XAML:
<Window x:Class="WpfApplication1.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:System="clr-namespace:System;assembly=mscorlib"
xmlns:local="clr-namespace:WpfApplication1"
Title="Window1" Height="300" Width="300" Loaded="Window_Loaded">
<Window.Resources>
<HierarchicalDataTemplate DataType="x:Type local:Foo">
<TextBlock Text="I am a Foo" />
</HierarchicalDataTemplate>
<HierarchicalDataTemplate DataType="x:Type System:String">
<TextBlock Text="I am a String" />
</HierarchicalDataTemplate>
</Window.Resources>
<Grid>
<TreeView Name="treeView1" ItemsSource="{Binding}" />
</Grid>
</Window>
코드:
namespace WpfApplication1
{
public class Foo
{
public string Name { get; set; }
}
public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
var list = new List<object> { "a", 1, "b", 2, new Foo() { Name="Brian"}};
treeView1.DataContext = list;
}
}
}
트리뷰에 다음과 같이 표시될 것으로 예상합니다.
I am a string
1
I am a string
2
I am a foo
하지만 제 어플리케이션에는 실제로 다음과 같은 내용이 표시됩니다.
a
1
b
2
WpfApplication1.Foo
이상한 점은 웹에서 볼 수 있는 거의 모든 예에서 이 작업을 수행하며(약간의 변형만 있음) 다른 누구도 문제 삼지 않는 것 같다는 것입니다.하지만 XAML을 재배치하기 위해 무수히 많은 방법을 시도했지만 아무런 도움이 되지 않는 것 같습니다.다른 한 쌍의 눈이 도움이 되길 바랍니다.
코드는 정상이지만 DataType 속성 값은 중괄호로 묶어야 합니다.
<HierarchicalDataTemplate DataType="{x:Type local:Foo}">
<TextBlock Text="I am a Foo" />
</HierarchicalDataTemplate>
<HierarchicalDataTemplate DataType="{x:Type System:String}">
<TextBlock Text="I am a String" />
</HierarchicalDataTemplate>
또한 아이템을 사용하지 않는 경우HierarchicalDataTemplate 소스 대신 DataTemplate를 사용할 수도 있습니다.
TreeView의 ItemTemplate 속성을 지정하지 않았습니다.이 속성은 리소스에 정의된 DataTemplate를 지정하려는 경우 사용할 DataTemplate를 TreeView에 알려줍니다.
<TreeView Name="treeView1"
ItemsSource="{Binding}"
ItemTemplate="{StaticResource MyResourceItemTemplate}" />
그러나 이 경우 실제로 DataTemplateSelector 구현을 사용하여TreeView.ItemTemplateSelector
표시할 유형에 따라 다른 템플릿을 선택하는 속성...
언급URL : https://stackoverflow.com/questions/1424554/how-do-i-use-the-datatype-property-on-a-wpf-datatemplate
'programing' 카테고리의 다른 글
iOS 스위프트UI: 프로그래밍 방식으로 보기 열기 또는 끄기 (0) | 2023.04.18 |
---|---|
bash 기본값 할당 (0) | 2023.04.18 |
Swift에서 Int를 문자열로 변환 (0) | 2023.04.18 |
유형별로 WPF 컨테이너의 자식을 가져오려면 어떻게 해야 합니까? (0) | 2023.04.18 |
NSAttributedString 텍스트 정렬 추가 (0) | 2023.04.18 |