我有两个 WPF 数据网格。当从第一个数据网格 dg1 中选择一行时,第二个数据网格 dg2 中称为“注释”的列应仅显示为空字符串,并且仅当 dg1 中所选行的“注释类型”列的内容相等时对“我”。否则,dg2 中“Notes”列的内容应该是来自 Notes 的集合 ItemsDg2 中的内容。
我的问题是,当值为“I”时,dg1 中“Note Type”列的内容显示在 dg2 的“Notes”列中,而不是显示空字符串。
<Window x:Name="MainWindow"
xmlns:my="http://schemas.microsoft.com/wpf/2008/toolkit"
xmlns:sys="clr-namespace:System;assembly=mscorlib">
<my:DataGrid Name="dg1" ItemsSource="{Binding Path=ItemsDg1}">
<my:DataGrid.Columns>
<my:DataGridTextColumn x:Name="iType" Binding="{Binding Path=Type}" Header="Note Type"/>
</my:DataGrid.Columns>
</my:DataGrid>
<my:DataGrid Name="dg2" ItemsSource="{Binding Path=ItemsDg2}">
<my:DataGrid.Columns>
<my:DataGridTextColumn Binding="{Binding Path=Notes}" Header="Notes">
<my:DataGridTextColumn.ElementStyle>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="Text" Value="{Binding Path=Notes}"></Setter>
<Style.Triggers>
<DataTrigger Binding="{Binding SelectedItem.Type, ElementName=dg1}" Value="I">
<Setter Property="Text" Value="{x:Static sys:String.Empty}"></Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</my:DataGridTextColumn.ElementStyle>
</my:DataGridTextColumn>
</my:DataGrid.Columns>
</my:DataGrid>
</Window>
ItemsDg1 是 It1 的列表
ItemsDg2 是 It2 的列表
public Class It1
{
private string _type;
public string Type
{
get { return _type; }
set
{
if (!_type.Equals(value))
{
_type = value;
}
}
}
}
public Class It2
{
private string _notes;
public string Notes
{
get { return _notes; }
set
{
if (!_notes.Equals(value))
{
_notes = value;
}
}
}
}
It1 和 It2 类有更多属性,但我在这里只展示了理解场景的最低限度。这同样适用于 dg1 和 dg2,它们有更多的数据网格列。