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