C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[1]: [WPF]HierarchicalDataTemplate


(過去ログ 96 を表示中)

[トピック内 2 記事 (1 - 2 表示)]  << 0 >>

■57288 / inTopicNo.1)  [WPF]HierarchicalDataTemplate
  
□投稿者/ saicolo (1回)-(2011/02/21(Mon) 14:57:29)

分類:[.NET 全般] 

こんにちは。
様々なところで調べましたが答えが見つからずこちらに投稿させていただきました。
よろしくお願い致します。
只今、HierarchicalDataTemplateを使ってチェックボックス付きのTreeviewを作成しております。
[XAML]

<HierarchicalDataTemplate x:Key="CheckBoxItemTemplate" ItemsSource="{Binding Children, Mode=OneTime}">

<StackPanel Orientation="Horizontal">

<StackPanel.Style>

<Style>

<Style.Triggers>

<DataTrigger Binding="{Binding Count}" Value="1">

<Setter Property="StackPanel.Background" Value="Red" />

</DataTrigger>

</Style.Triggers>

</Style>

</StackPanel.Style>

<CheckBox Focusable="False" IsChecked="{Binding IsChecked}" IsThreeState="{Binding IsThreeState}" VerticalAlignment="Center"/>

<ContentPresenter Content="{Binding Name, Mode=OneTime}" Margin="2,0"/>

</StackPanel>

</HierarchicalDataTemplate>











<TreeView x:Name="tree" ItemContainerStyle="{StaticResource CheckedTreeViewItemStyle}" ItemsSource="{Binding ReportList}"

ItemTemplate="{StaticResource CheckBoxItemTemplate}" Grid.Row="0" Grid.Column="0" TabIndex="12" />

[Class]※テスト用に1が帰るように設定してます。

Private _count As Integer = 0

Public Property Count() As Integer

Get

Return 1

End Get

Set(ByVal value As Integer)

Me._count = 1

End Set

End Property

以上のソースの中で、DataTriggerを用い、とあるクラスのプロパティを見てスタックパネルの背景色を変える処理を作成し
たいのですがうまく動作してくれません。何か足らない設定があるのでしょうか?
ご教授いただけると助かります。
よろしくお願いたします。
引用返信 編集キー/
■57349 / inTopicNo.2)  Re[1]: [WPF]HierarchicalDataTemplate
□投稿者/ saicolo (3回)-(2011/02/23(Wed) 13:07:13)
2011/02/23(Wed) 13:07:38 編集(投稿者)
2011/02/23(Wed) 13:07:34 編集(投稿者)

解決致しましたので解決済みとさせていただきます。

[解決策]
のTriggerのpropertyに設定しているCountがうまく読めていないようした。
プログラム側でDataContextにViewModelクラスを設定していまして、CountプロパティはViewModelクラスのメンバになります。
しかし、DataContextHierarchicalDataTemplateでItemSourceを設定しているため、CountをdatacontextではなくItemsourceにさがしにいっていたようです。そこで以下のような記述に変更したところ
動作するようになりました。以下のようにすると指定した親コントロールから順にプロパティ探しにいってくれるようです。

DataTriggerの部分を
<DataTrigger Binding="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}, Path=DataContext.Count}" Value="1">

貴重な場をお借りしました。
ありがとうございました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -