WPF datagrid如何获取对行的访问权限

时间:2016-01-16 01:19:03

标签: c# wpf xaml mvvm datagrid

似乎我继承的WPF应用程序有一个DataGrid

1...26

如果文本框中包含文本,我想最终将背景颜色设置为黄色。

单击Datagrid中的某些行

时会出现文本

似乎一切都是基于这个“绑定”

1...69

我有一个文本框,我为其添加了一个名称

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

显示当我在一个方法中时,我可以“测试”它并且它可以正常工作

  {Binding ... }   

但是,我不明白为什么我无法处理从Datagrid中点击的任何行改变的数据,然后数据在xaml页面上的许多文本框等中“神奇地”出现。

我认为“Binding”正在处理这个问题,但它也是MVVM双向绑定的吗?

我已经尝试将这么多断点压缩到这么多方法中,但我似乎无法让它们向我展示如何在行点击时改变数据

1 个答案:

答案 0 :(得分: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中显示的文本绑定到ThreatText。这意味着只有在某个类(您的viewmodel)中更改名为ThreatText的属性时,文本才会更改。您是否尝试在ThreatText属性的setter上设置断点?您也可以在getter上设置断点。当您单击文本框/行时,WPF会更新UI中的文本,这意味着由于ThreatText中的某些更改,它会重新评估绑定。这也意味着它会击中吸气剂......你可以检查堆栈跟踪是否可以看到发生了什么。