버튼의 클릭 이벤트에 문제가 있고 Silverlight Toolkit과 일치하는 Silverlight 3.0을 사용하고 있습니다.Silverlight : 계층 적 데이터 템플릿에 이벤트 처리기를 정의하십시오.
TreeView sample http://a.imagehost.org/0939/TreeView.png :
문제는이 트 리뷰가 있습니다.
특정 노드의 값은 해당 노드의 값의 합계입니다. 잎에만 데이터를 추가 할 수 있습니다 (당분간). 내가 원하는 것은 사용자가 트리의 항목을 추가 (결국 제거)하여 결국 사용자 정의 다이어그램을 만들 수 있다는 것입니다. 그 목적을 위해 사용자가 클릭 한 노드의 자식으로 새 줄/노드를 삽입하는 "더하기 부호"를 원합니다. (예 : "디스플레이"에서 더하기를 클릭하면 CRT 또는 TFT 등을 지정하기 위해 아래에 한 줄이 표시됩니다.)
나는 모든 두뇌가 가치가 있다고 생각합니다. 행사. TextBlock, TextBox 및 Button은 계층 적 템플릿에 정의되어 있으며 해당 템플릿에서 Click Handler를 정의 할 수 없습니다.
OTOH, (C#) 코드 내에서 특정 TreeViewItem의 템플릿 항목을 가져 오는 방법을 찾지 못했습니다. trv.ItemContainerGenerator.GetContainerFromItem (item)을 아주 잘 할 수 있고 Justin Angel showed으로 글자 크기를 아주 잘 바꿀 수 있지만 텍스트 상자 나 버튼에 접근 할 방법을 찾지 못했습니다.
버튼에 클릭 이벤트를 캡처하는 방법이 있습니까? 또는 "아래에 추가"기능을 제공하는 다른 방법이 있습니까?
미리 감사드립니다.
<controls:TreeView x:Name="SankeyDataTree"
ItemTemplate="{StaticResource SankeyTreeTemplate}" BorderThickness="0"
Background="{x:Null}" HorizontalAlignment="Left" VerticalAlignment="Top">
<controls:TreeViewItem IsExpanded="True">
<controls:TreeViewItem.HeaderTemplate>
<DataTemplate>
<TextBlock Text="Loading..."/>
</DataTemplate>
</controls:TreeViewItem.HeaderTemplate>
</controls:TreeViewItem>
</controls:TreeView>
나는이 HierarchicalDataTemplate을 사용 (그리고 Timmy Kokke에서 appraoch 훔쳐) :이 트 리뷰에
<Data:HierarchicalDataTemplate x:Key="SankeyTreeTemplate" ItemsSource="{Binding Children}">
<Grid Height="24">
<Grid.ColumnDefinitions>
<!-- ... -->
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding Path=Value.name, Mode=TwoWay}" VerticalAlignment="Center"/>
<TextBox Text="{Binding Path=Value.flow, Mode=TwoWay}" Margin="4,0" VerticalAlignment="Center" d:LayoutOverrides="Width" Grid.Column="1" TextAlignment="Right" Visibility="{Binding Children, Converter={StaticResource BoxConverter}, ConverterParameter=\{box\}}"/>
<TextBlock Text="{Binding Path=Value.throughput, Mode=TwoWay}" Margin="4,0" VerticalAlignment="Center" d:LayoutOverrides="Width" Grid.Column="1" TextAlignment="Right" Visibility="{Binding Children, Converter={StaticResource BoxConverter}, ConverterParameter=\{block\}}"/>
<Button Margin="0" Grid.Column="2" Style="{StaticResource TreeViewItemButtonStyle}">
<Image Source="../Assets/add.png" Margin="0" HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Button>
</Grid>
</Data:HierarchicalDataTemplate>
가
데이터
더 트 리뷰의 XAML이있다 바운드는 "SimpleTree"이며, 그 값은 기본적으로 문자열 (이름)과 두 개의 double (흐름 및 처리량).
public String name { get; set; }
public Double flow { get; set; }
public Double throughput { get; set; }
는 (플러스에서 INotifyPropertyChanged의 코드는 텍스트 상자에 양방향 바인딩을 얻을 수 있습니다.)
굉장합니다. 도와 줘서 고마워! 나는 마이크로 소프트가 철저히하고 내가 시도한 것을 할 수있는 방법이 있다는 것을 알았다. ;) – Cornelius
Node 클래스는 어디에 있습니까? WPF UserControl에서이 정확한 동작이 필요하지만 Node 클래스의 네임 스페이스에 대한 참조가 없기 때문에 컴파일 할 수 없습니다. Google에서 도움이되지 않았습니다. 감사. – Shawn
'Node' 클래스는 당신 자신의 클래스입니다. 트리 뷰의 각 노드는 데이터 바인딩을 사용하여 바인딩되는 객체의 클래스입니다. –