繁体   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