簡體   English   中英

WPF datagrid如何獲取對行的單擊

[英]WPF datagrid how to get access to the row click

似乎我繼承的WPF應用程序具有DataGrid

<DataGrid x:Name="dataGrid" ItemsSource="{Binding AllTroubleCalls}" SelectedIndex="{Binding SelectedIndex}" 

我只想在“文本框”中包含文本的情況下將“背景色”設置為黃色。

當我單擊Datagrid中的某些行時,將顯示文本

似乎一切都基於此“綁定”

  {Binding ... }   

我有一個向其添加名稱的文本框

<TextBox ToolTipService.ShowDuration="120000" ToolTip="{Binding ThreatText}" Name="txtThreat" Text="{Binding ThreatText}"  
                 TextWrapping="Wrap" AcceptsReturn="True" 
                 VerticalScrollBarVisibility="Visible" HorizontalScrollBarVisibility="Visible"
                 Margin="3" Grid.Row="8"  Grid.Column="1" 
                 Grid.ColumnSpan="3" Grid.RowSpan="1" IsReadOnly="True" Height="30"/>

然后顯示當我處於某種方法中時,我可以“測試”此方法,並且可以正常工作

  txtThreat.Background = new SolidColorBrush(Colors.Yellow); 

但是,我不明白為什么我無法從Datagrid中單擊的任何行上獲取更改后的數據的句柄,然后在xaml頁面上的許多文本框等中“神奇地”顯示該數據。

我收集到“綁定”正在處理此問題,但它也是MVVM 2方式綁定嗎?

我曾嘗試將這么多的斷點粘貼到這么多的方法中,但似乎無法獲得其中任何一個向我展示行點擊時數據的變化情況

沒有細節,這個問題有點過多了。 但是,我至少可以回答我認為您的目標。 如果其中包含文本,則使文本框為黃色的最簡單方法是使用樣式:

    <TextBox >
        <TextBox.Style>
            <Style TargetType="TextBox">
                <Setter Property="Background" Value="Yellow"></Setter>
                <Style.Triggers>
                    <Trigger Property="Text" Value="">
                        <Setter Property="Background" Value="White"></Setter>
                    </Trigger>
                </Style.Triggers>
            </Style>
        </TextBox.Style>
    </TextBox>

至於弄清楚數據是如何變化的...在您的文本框中顯示的文本已綁定到ThreatText。 這意味着僅當在某個地方(您的視圖模型)的類中更改了名為ThreatText的屬性時,文本才應更改。 您是否嘗試過在ThreatText屬性的設置器上設置斷點? 您也可以在getter上設置一個斷點。 聽起來,當您單擊文本框/行時,WPF會更新UI中的文本,這意味着由於ThreatText的某些更改,它正在重新評估綁定; 這也意味着它將擊中吸氣劑……您可以檢查堆棧跟蹤(如果確實如此)以查看發生了什么。

暫無
暫無

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

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