1

HierarchicalDataTemplate を使用して Treeview を作成しました:

<StackPanel x:Name="LayoutRoot" Background="White">
        <StackPanel.Resources>
            <sdk:HierarchicalDataTemplate x:Key="ChildTemplate" >
                <TextBlock FontStyle="Italic" Text="{Binding Path=Title}" />
            </sdk:HierarchicalDataTemplate>
            <sdk:HierarchicalDataTemplate x:Key="NameTemplate" 
            ItemsSource="{Binding Path=ChildTopics}" 
            ItemTemplate="{StaticResource ChildTemplate}">
                <TextBlock Text="{Binding Path=Title}" FontWeight="Bold" />
            </sdk:HierarchicalDataTemplate>
        </StackPanel.Resources>

        <sdk:TreeView Width="400"  Height="300" ItemsSource="{Binding}" 
        ItemTemplate="{StaticResource NameTemplate}" x:Name="myTreeView">

ツリービューを無効にしたい場合は、次のようにする必要があります。

myTreeView.IsEnabled = false;

しかし、いくつかのノードを無効にしたいだけです。

Silverlight はデータ トリガーをサポートしていないため、子ノードにアクセスする方法がありません。

では、子ノードを無効にするにはどうすればよいですか。

4

1 に答える 1

0

うーん、いくつかの特定の項目を無効にしたいので、VM に無効にするためのプロパティを与えませんか? 例えば

public ItemVm : ViewModelBase //assuming you're are using such a class
{
    public string Title
    {
        get { return GetValue(() => Title); }
        set { SetValueAndNotify(() => Title, value); }
    }

    public bool IsEnabled
    {
        get { return GetValue(() => IsEnabled); }
        set { SetValueAndNotify(() => IsEnabled, value); }
    }
}

Templateこれで、いいねを変更できます

<sdk:HierarchicalDataTemplate x:Key="NameTemplate" ItemsSource="{Binding Path=ChildTopics}" 
                              ItemTemplate="{StaticResource ChildTemplate}">
     <Border IsEnabled="{Binding IsEnabled}" BorderThickness="0" Background={x:Null} >
         <TextBlock Text="{Binding Path=Title}"  FontWeight="Bold" />
     </Border>
</sdk:HierarchicalDataTemplate>

お役に立てれば。テストされていないことに注意してください。

于 2013-08-22T08:32:13.877 に答える