亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

如果選擇了更改ListBox項目的WPF DataTemplate

如果選擇了更改ListBox項目的WPF DataTemplate

鳳凰求蠱 2019-11-25 14:06:40
我需要根據是否選擇項目來更改ListBox中項目的DataTemplate(選擇時顯示不同/更多信息)。單擊有問題的ListBox項(僅通過制表鍵)時,在DataTemplate(堆棧面板)的最頂層元素上沒有出現GotFocus / LostFocus事件,并且我沒有主意。
查看完整描述

3 回答

?
弒天下

TA貢獻1818條經驗 獲得超8個贊

還應該注意的是,堆棧面板不可操縱,因此它永遠都不會獲得焦點(如果您/ really /希望使其聚焦,則將其設置為Focusable = True)。但是,在這種情況下要記住的關鍵是Stackpanel是TreeViewItem的子級,在這種情況下,它是ItemContainer。正如Micah所建議的那樣,調整itemcontainerstyle是一個好方法。

您可能可以使用DataTemplates進行操作,諸如datatriggers之類的事情將使用RelativeSouce標記擴展來查找listviewitem


查看完整回答
反對 回復 2019-11-25
?
慕后森

TA貢獻1802條經驗 獲得超5個贊

最簡單的方法是為“ ItemContainerStyle”而不是“ ItemTemplate”屬性提供模板。在下面的代碼中,我創建了2個數據模板:一個用于“未選中”狀態,一個用于“選中”狀態。然后,我為“ ItemContainerStyle”創建一個模板,該模板是包含該項目的實際“ ListBoxItem”。我將默認的“ ContentTemplate”設置為“ Unselected”狀態,然后提供一個觸發器,當“ IsSelected”屬性為true時,該觸發器將交換出模板。(注意:為簡單起見,我將后面代碼中的“ ItemsSource”屬性設置為字符串列表)


<Window.Resources>


<DataTemplate x:Key="ItemTemplate">

    <TextBlock Text="{Binding}" Foreground="Red" />

</DataTemplate>


<DataTemplate x:Key="SelectedTemplate">

    <TextBlock Text="{Binding}" Foreground="White" />

</DataTemplate>


<Style TargetType="{x:Type ListBoxItem}" x:Key="ContainerStyle">

    <Setter Property="ContentTemplate" Value="{StaticResource ItemTemplate}" />

    <Style.Triggers>

        <Trigger Property="IsSelected" Value="True">

            <Setter Property="ContentTemplate" Value="{StaticResource SelectedTemplate}" />

        </Trigger>

    </Style.Triggers>

</Style>


</Window.Resources>

<ListBox x:Name="lstItems" ItemContainerStyle="{StaticResource ContainerStyle}" />


查看完整回答
反對 回復 2019-11-25
  • 3 回答
  • 0 關注
  • 757 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號