簡體   English   中英

WPF MVVM TreeView IsSelected綁定不起作用

[英]WPF MVVM TreeView IsSelected binding not working

我有一個問題,我看不清為什么它不起作用。 我有一個帶有轉換器的3層樹狀視圖,它使我可以將兩個第一層倒置。 在此TreeView上,我嘗試使用IsSelected屬性,但是由於某種原因,我不知道在ViewModel中永遠不會調用它。

這是xaml。

<TreeView  Margin="0,0,0,0" Padding="0,7,0,7" BorderBrush="{x:Null}"  Background="#FFF8FAFB" Name="BusinessCaseTreeView">
    <TreeView.ItemContainerStyle>
        <Style TargetType="{x:Type TreeViewItem}">
            <Setter Property="IsSelected" Value="{Binding IsSelected, Mode=TwoWay}" />
        </Style>
    </TreeView.ItemContainerStyle>
    <TreeView.ItemsSource>
        <MultiBinding Converter="{converter:BusinessCasesConverter}">
            <Binding Path="BusinessCases"></Binding>
            <Binding Path="GroupByCreditor"></Binding>
        </MultiBinding>
    </TreeView.ItemsSource>
    <TreeView.Resources>
        <HierarchicalDataTemplate DataType="{x:Type converter:BusinessCaseTreeViewableFirst}" ItemsSource="{Binding SecondLevel}">
            <StackPanel Orientation="Horizontal">
                <TextBlock Text="{Binding FirstLevel.Id}" Margin="10,0,0,0" Foreground="#FF03577A" FontWeight="Bold" />
                <TextBlock Text="-" Margin="5,0,0,0" Foreground="#FF03577A" FontWeight="Bold"/>
                <TextBlock Text="{Binding FirstLevel.FirstName}" Margin="5,0,0,0" FontWeight="Bold" Foreground="#FF03577A" />
                <TextBlock Text="{Binding FirstLevel.LastName}" Margin="5,0,0,0" FontWeight="Bold" Foreground="#FF03577A" />
            </StackPanel>
        </HierarchicalDataTemplate>
        <HierarchicalDataTemplate DataType="{x:Type converter:BusinessCaseTreeViewModelSecond}" ItemsSource="{Binding  BusinessCases}">
            <StackPanel Orientation="Horizontal">
                <TextBlock Text="{Binding SecondLevel.Id}" Margin="10,0,0,0" Foreground="#FF095A7C" FontWeight="Bold" />
                <TextBlock Text="-" Margin="5,0,0,0" Foreground="#FF095A7C" FontWeight="Bold"/>
                <TextBlock Text="{Binding SecondLevel.FirstName}" Margin="5,0,0,0" FontWeight="Bold" Foreground="#FF095A7C" />
                <TextBlock Text="{Binding SecondLevel.LastName}" Margin="5,0,0,0" FontWeight="Bold" Foreground="#FF095A7C" />
            </StackPanel>
        </HierarchicalDataTemplate>
        <DataTemplate DataType="{x:Type business:BusinessCase}">
            <StackPanel Orientation="Horizontal">
                <TextBlock Text="(" Margin="10,0,0,0" Foreground="#FF0B89BD" FontWeight="Bold" />
                <TextBlock Text="{Binding Id}" Margin="1,0,0,0" Foreground="#FF0B89BD" FontWeight="Bold" />
                <TextBlock Text=")" Margin="2,0,0,0" Foreground="#FF0B89BD" FontWeight="Bold"/>
                <TextBlock Text="{Binding CreationDate, StringFormat='{}{0:dd MMMM yyyy}'}" Margin="5,0,0,0" Foreground="#FF0B89BD" />
                <TextBlock Text="-" Margin="5,0,0,0" Foreground="#FF0B89BD" FontWeight="Bold"/>
                <TextBlock Text="{Binding ClosureDate, StringFormat={}{0:dd MMMM yyyy}}" Margin="5,0,0,0" Foreground="#FF0B89BD" />
            </StackPanel>
        </DataTemplate>
    </TreeView.Resources>
</TreeView>

我從未到達ViewModel中的IsSelected setter。 如果您有任何想法,歡迎您。

提前致謝

它可能與您在ItemContainerStyle 另外,請確保IsSelected在所有添加到樹視圖的類型中

嘗試這個:

<TreeView>
    <TreeView.Resources>
        <Style TargetType="{x:Type TreeViewItem}">
            <Setter Property="IsSelected"
                    Value="{Binding IsSelected, Mode=TwoWay}" />
        </Style>
    </TreeView.Resources>
    .....
</TreeView>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM