2016-01-16 42 views
0

看來,我繼承了WPF應用程序有一個DataGridWPF數據網格如何獲得訪問該行單擊

<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的方式綁定?

我已經嘗試了抹灰這麼多斷點到這麼多的方法,但我似乎無法得到任何人告訴我如何將數據在行點擊改變

回答

1

有一個小在這太多的事情沒有細節的問題。不過,我至少可以回答我認爲是你的目標。最簡單的方式來獲得一個文本框是黃色的,如果有一個文本中它與樣式:

<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的屬性在某個類中(您的viewmodel)發生更改時,文本纔會更改。你有沒有嘗試在ThreatText屬性的setter上放置一個斷點?你也可以在getter上放置一個斷點。這聽起來像是當你在文本框/行中單擊時,WPF更新UI中的文本,這意味着它由於ThreatText中的某些更改而重新評估綁定;這也意味着它會擊中getter ...你可以檢查堆棧跟蹤,如果它確實看到發生了什麼。

+0

甜美的背景非常酷的觸發器工作。所以綁定仍然是一個謎,因爲代碼工作之前,我甚至添加了「名稱」,所以基本上它沒有「txtThreat」更新 –

相關問題