我有一個TreeView的幾個同步實例..TreeView模板的瘋狂
它工作得很好,我綁定了一些屬性到ViewModel。
<Style x:Key="FlattenedTreeViewItem" TargetType="{x:Type TreeViewItem}">
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
<Setter Property="IsExpanded" Value="{Binding IsExpanded}" />
<Setter Property="IsSelected" Value="{Binding IsSelected}" />
由於某種原因,我決定重寫TreeViewItem的模板。
這個刪除上述
所有我想要做的屬性綁定,是帶回默認選擇回樹型視圖,但似乎沒有任何工作。 我嘗試在IsSelected上使用簡單的觸發器並設置邊框/背景/前景。沒有任何顯示任何更改。
我已經搜索了,到目前爲止我發現的任何東西都是XAML頁面,只是爲了設置Selected style? 是不是有一種簡單的方法將它帶回模板?
同樣適用於IsExapnded, 我必須這樣做:
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="ExpansionStates">
<VisualState x:Name="Expanded">
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="ItemsHost">
<DiscreteObjectKeyFrame KeyTime="0" Value="{x:Static Visibility.Visible}" />
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
<VisualState x:Name="Collapsed" />
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
似乎過高,但至少這一個工程。
隨着選擇,我不能讓它使用簡單的觸發器工作..我不能把選擇的樣式,我不想帶來一些巨大的醜塊大小xaml。
這裏是我完整的模板:
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="TreeViewItem">
<StackPanel>
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="ExpansionStates">
<VisualState x:Name="Expanded">
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="ItemsHost">
<DiscreteObjectKeyFrame KeyTime="0" Value="{x:Static Visibility.Visible}" />
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
<VisualState x:Name="Collapsed" />
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<ContentPresenter ContentSource="Header" />
<ItemsPresenter Name="ItemsHost" Visibility="Collapsed" />
</StackPanel>
</ControlTemplate>
</Setter.Value>
</Setter>
謝謝!我最終使用表達式混合對模板進行了逆向工程,發現我在內容展示器周圍缺少邊框。再次感謝 –