[英]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.