第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何讓文本框填充樹視圖項

如何讓文本框填充樹視圖項

C#
慕尼黑8549860 2021-07-02 07:47:53
我有一個 TreeView,它有 3 個級別,由HierarchicalDataTemplate. 這是部分 xaml 列表:<TreeView    Name="TreeView"    ItemsSource="{Binding GTOs}"    ScrollViewer.HorizontalScrollBarVisibility="Hidden">    <TreeView.ItemsPanel>        <ItemsPanelTemplate>            <!--  This binding prevents the TreeView from slipping over to the right when an item is clicked.  -->            <StackPanel MaxWidth="{Binding ActualWidth, RelativeSource={RelativeSource AncestorType=ContentPresenter, AncestorLevel=1}}" />        </ItemsPanelTemplate>    </TreeView.ItemsPanel>    <TreeView.Resources>        <HierarchicalDataTemplate DataType="{x:Type local:TreeGTOViewModel}" ItemsSource="{Binding Children}">            <TextBlock                Width="{Binding RelativeSource={RelativeSource AncestorType={x:Type TreeView}}, Path=ActualWidth}"                MouseDown="TextBlock_MouseDown"                Tag="{Binding Uri}"                Text="{Binding Title}" />        </HierarchicalDataTemplate>TextBlock的BindingonWidth屬性確保每個都TreeViewItem采用 TreeView 容器的整個寬度(而不僅僅是文本框的寬度)。結合 Material Design 樣式,當鼠標懸停在樹中的特定項目上時,這會產(chǎn)生很好的陰影效果。只有一個問題。雖然我可以讓 Width 假設 TreeViewItem 的全寬,但我似乎無法對 Height 做同樣的事情。這意味著用戶可以在 TreeView 項目的邊緣附近單擊并查看所有效果,就好像該項目被單擊一樣,但該MouseDown事件不會觸發(fā)。這是應該可點擊的區(qū)域(紅色虛線):這是實際可點擊的區(qū)域(文本框的外邊框):我嘗試了許多不同的方法,包括這個:VerticalAlignment="Stretch"還有這個:Height="{Binding RelativeSource={RelativeSource AncestorType={x:Type TreeViewItem}}, Path=ActualHeight}"但它們要么沒有效果,要么以意想不到的方式破壞 TreeView。我認為問題的一部分是在ItemsPanelTemplate.如何讓每個 TreeViewItem 中的 TextBox 假定實際 TreeViewItem 的高度?下面是可視化樹相關部分的圖像,從 TreeView 到可點擊的文本框。所述Ripple元件是一個MaterialDesignThemes.Wpf.Ripple對象。
查看完整描述

2 回答

?
回首憶惘然

TA貢獻1847條經(jīng)驗 獲得超11個贊

好吧,我通過走不同的路線解決了這個問題。我不是MouseDown在文本塊上掛鉤事件,而是SelectedItemChanged在樹視圖上掛鉤事件。


    <TreeView

        ItemsSource="{Binding GTOs}"

        SelectedItemChanged="TreeView_SelectedItemChanged">

在RoutedPropertyChangedEventArgs該的SelectedItemChanged事件包含視圖模型的特定TreeViewItem,其產(chǎn)生的導航Uri屬性我需要(我以前綁定這個屬性到文本框的標簽屬性)。


新的事件處理程序如下所示:


private void TreeView_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e)

{

    dynamic viewModel = e.NewValue;

    var uri = viewModel.Uri;

    (DataContext as TreeViewModel).Navigate(uri);

}

樹的每一層都包含不同的 ViewModel 類型,但它們都有一個 Uri 屬性,因此dynamic綁定提供了所需的“不關心它是什么類型”的行為。


我現(xiàn)在可以從 TextBlock 中刪除Tag綁定和MouseDown事件。


    <HierarchicalDataTemplate DataType="{x:Type local:TreeGTOViewModel}" ItemsSource="{Binding Children}">

        <TextBlock

            Width="{Binding RelativeSource={RelativeSource AncestorType={x:Type TreeView}}, Path=ActualWidth}"

            Text="{Binding Title}" />

并且樹視圖項目現(xiàn)在可以正確響應,無論單擊何處。


查看完整回答
反對 回復 2021-07-03
  • 2 回答
  • 0 關注
  • 174 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號