Laden...

[Erledigt]TreeViewItem IsSelected Binding an SubItems

Erstellt von Ahrimaan vor 12 Jahren Letzter Beitrag vor 12 Jahren 894 Views
A
Ahrimaan Themenstarter:in
350 Beiträge seit 2010
vor 12 Jahren
[Erledigt]TreeViewItem IsSelected Binding an SubItems

Hallo zusammen,
ich habe ein treeView welches je nach Typ der Klasse ein anderes Template nutzt

<Window x:Class="MK.AgentWpf.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
        xmlns:local="clr-namespace:MK.AgentWpf.ViewModel"
        xmlns:model="clr-namespace:MK.AgentWpf.Model"
        Title="MainWindow" Height="350" Width="525">
    <Window.Resources>
        <local:MainWindowModel x:Key="vm"/>
    </Window.Resources>
    <!--LayoutBegin-->
    <Grid DataContext="{Binding Source={StaticResource vm}}">
        <Grid.RowDefinitions>
            <RowDefinition/>
            <RowDefinition Height="30"/>
        </Grid.RowDefinitions>
        <TreeView ItemsSource="{Binding Items}" SelectedItemChanged="TreeView_SelectedItemChanged">
            <TreeView.ItemContainerStyle>
                <Style TargetType="{x:Type TreeViewItem}" >
                    <Setter Property="IsSelected" Value="{Binding vm:Items.RootNode.SubNode.IsSelected}"/>
                    <Style.Triggers>
                        <Trigger Property="HasItems" Value="true">
                            <Setter Property="Focusable" Value="False"/>
                        </Trigger>
                       
                    </Style.Triggers>
                </Style>
            </TreeView.ItemContainerStyle>
            <TreeView.Resources>
                <HierarchicalDataTemplate DataType="{x:Type model:RootNode}"
                              ItemsSource="{Binding Path=SubNodes}">
                    <Grid>
                        <TextBlock Text="{Binding Text}" />
                    </Grid>
                </HierarchicalDataTemplate>
                <HierarchicalDataTemplate DataType="{x:Type model:SubNodeItemWithCheckbox}">
                    <Grid>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="16"/>
                            <ColumnDefinition/>
                        </Grid.ColumnDefinitions>
                        <CheckBox Grid.Column="0" IsChecked="{Binding IsSelected, Mode=TwoWay}" IsEnabled="{Binding IsEnabled}"/>
                        <TextBlock Text="{Binding Text}" Grid.Column="1"/>
                    </Grid>
                </HierarchicalDataTemplate>
                <HierarchicalDataTemplate DataType="{x:Type model:SubNode}">
                        <TextBlock Text="{Binding Text}"/>
                </HierarchicalDataTemplate>
            </TreeView.Resources>
        </TreeView>


        <Button Grid.Row="1" Width="30" Command="{Binding OkCommand}">
            <Image Source="/Images/Sign001.ico"/>
        </Button>
    </Grid>
</Window>

Das Problem ist nur der Template vom Typ SubNode

 <HierarchicalDataTemplate DataType="{x:Type model:SubNode}">
                        <TextBlock Text="{Binding Text}"/>
                </HierarchicalDataTemplate>

Ich möchte, dass wenn ein Item Selektiert wird, es im Model gesetzt wird.
Ich habe es schon mit de, Trigger probiert

<Style TargetType="{x:Type TreeViewItem}" >
                    <Setter Property="IsSelected" Value="{Binding  Path=IsSelected}"/>
                    <Style.Triggers>
                        <Trigger Property="HasItems" Value="true">
                            <Setter Property="Focusable" Value="False"/>
                        </Trigger>
                       
                    </Style.Triggers>

Aber ich weiß nicht so recht wie ich das Binding machen soll. Das Property heißt IsSelected. Leider kann er nicht drauf zugreifen.
Sicher mache ich nur das Binding falsch oder ?

109 Beiträge seit 2011
vor 12 Jahren

Hallo Ahrimaan,

kommen denn im Ausgabefenster irgendwelche Fehlermeldungen?

Um Rekursion zu verstehen, muss man erst mal Rekursion verstehen, muss man erst mal Rekursion verstehen, ....

A
Ahrimaan Themenstarter:in
350 Beiträge seit 2010
vor 12 Jahren

Hallo Wackelkontakt,
das Problem hat sich erledigt. Ich habe mich von der Warnung im XAML leiten lassen.
Wenn ich die Property einen Breakpoint setzte, klappt es , verrückt .....