【问题标题】:WPF datagrid how to get access to the row clickWPF datagrid如何访问行点击
【发布时间】:2016-01-16 01:19:02
【问题描述】:

似乎我继承的 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 方式绑定?

我已经尝试将这么多断点粘贴到这么多方法中,但我似乎无法让它们中的任何一个向我展示数据在行单击时是如何变化的

【问题讨论】:

    标签: c# wpf xaml mvvm datagrid


    【解决方案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>
    

    至于弄清楚数据是如何变化的...... TextBox 中显示的 Text 绑定到 ThreatText。这意味着只有在某处(您的视图模型)的类中更改名为 ThreatText 的属性时,文本才应更改。您是否尝试在 ThreatText 属性的设置器上设置断点?您也可以在 getter 上设置断点。听起来当您单击文本框/行时,WPF 会更新 UI 中的文本,这意味着由于 ThreatText 中的某些更改,它正在重新评估绑定;这也意味着它会命中 getter...如果确实如此,您可以查看堆栈跟踪以了解发生了什么。

    【讨论】:

    • 甜蜜的背景触发非常酷。所以绑定仍然是一个谜,因为代码在我添加“名称”之前就已经工作了,所以基本上它在没有“txtThreat”的情况下更新
    猜你喜欢
    • 1970-01-01
    • 2011-03-08
    • 2013-12-13
    • 1970-01-01
    • 1970-01-01
    • 2017-07-23
    • 1970-01-01
    • 1970-01-01
    • 2014-10-28
    相关资源
    最近更新 更多