簡體   English   中英

基於IsSelected的WPF DataGridCell樣式觸發器僅工作一次

[英]WPF DataGridCell Style Trigger based on IsSelected only works once

我一直在嘗試對WPF DataGrid進行一次單擊單擊,並且查看了很多關於stackoverflow的解決方案,但是還有一個尚未解決的用例。 我需要設置一個樣式觸發器,但我不僅需要一直將IsEditing設置為true。 我需要第二種條件。 我遇到的問題是每個單元只能使用一次。

這是幾乎可以使用的XAML。

<Style TargetType="DataGridCell" BasedOn="{StaticResource {x:Type DataGridCell}}">
   <Style.Triggers>
      <MultiDataTrigger>
         <MultiDataTrigger.Conditions>
            <Condition Binding="{Binding RelativeSource={RelativeSource Self}, Path=IsSelected}" Value="True" />
            <Condition Binding="{Binding RelativeSource={RelativeSource AncestorType=DataGrid}, Path=DataContext.IsEditing}" Value="True" />
         </MultiDataTrigger.Conditions>
         <Setter Property="IsEditing"  Value="true" />
      </MultiDataTrigger>
   </Style.Triggers>
</Style>

問題在於,每個單元只能工作一次。 現在,如果我將第一個條件更改為基於IsFocused,則它始終有效。 這樣做的問題是,由於明顯的原因,我無法單擊單元格中的文本框。 我真的很茫然,為什么IsSelected每個單元格只能工作一次。 順便說一句,如果我將視圖從編輯模式中移出,然后使用同樣位於視圖上的按鈕將其放回原處,它將再次起作用...對於每個單元格一次。

有人對這種奇怪行為為什么會發生有任何見解嗎?

好。 我不明白為什么IsSelected不起作用,但是我確實找到了一個起作用的屬性,然后讓我在單元格的文本框中鍵入內容。 訣竅是使用IsKeyboardFocusWithin屬性。 這是按預期工作的完整解決方案:

<DataGrid.CellStyle>
   <Style TargetType="DataGridCell" BasedOn="{StaticResource {x:Type DataGridCell}}">
      <Style.Triggers>
         <MultiDataTrigger>
            <MultiDataTrigger.Conditions>
               <Condition Binding="{Binding RelativeSource={RelativeSource Self}, Path=IsKeyboardFocusWithin}" Value="True" />
               <Condition Binding="{Binding RelativeSource={RelativeSource AncestorType=DataGrid}, Path=DataContext.IsEditing}" Value="True" />
            </MultiDataTrigger.Conditions>
            <Setter Property="IsEditing"  Value="true" />
         </MultiDataTrigger>
      </Style.Triggers>
   </Style>
</DataGrid.CellStyle>

暫無
暫無

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

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