Wpf 在DataGridTemplateColumn.CellStyle中使用DataTrigger
我有一个数据网格,如下所示Wpf 在DataGridTemplateColumn.CellStyle中使用DataTrigger,wpf,datagrid,datatrigger,datagridtemplatecolumn,Wpf,Datagrid,Datatrigger,Datagridtemplatecolumn,我有一个数据网格,如下所示 <DataGrid Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="3" ItemsSource="{Binding SelectedSet.Rows}" IsSynchronizedWithCurrentItem="True" AutoGenerateColumns="False" CanUserAddRows="False" Style="{StaticResource DataGridStyle2}" Heade
<DataGrid Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="3" ItemsSource="{Binding SelectedSet.Rows}" IsSynchronizedWithCurrentItem="True" AutoGenerateColumns="False" CanUserAddRows="False" Style="{StaticResource DataGridStyle2}" HeadersVisibility="Column" SelectedItem="{Binding SelectedItem}" EnableRowVirtualization="False">
<DataGrid.Columns>
<DataGridTemplateColumn Width="30*" Header="{StaticResource RangeColumnHeader}" HeaderStyle="{StaticResource HeaderStyle2}" SortMemberPath="StartValue">
<DataGridTemplateColumn.CellStyle>
<DataTrigger Binding="{Binding SelectedSet.IsDefault}" Value="True">
<Setter Property="IsEnabled" Value="False"/>
</DataTrigger>
<DataTrigger Binding="{Binding SelectedSet.IsDefault}" Value="False">
<Setter Property="IsEnabled" Value="True"/>
</DataTrigger>
</DataGridTemplateColumn.CellStyle>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DatGrid>
public class UCSetModel : ViewModelBase
{
private Set _SelectedSet;
public Set SelectedSet
{
get
{
return _SelectedSet;
}
set
{
_SelectedSet = value;
RaisePropertyChanged("SelectedSet");
}
}
}
public class Set
{
private ObservableCollection<Markers> _rows;
public ObservableCollection<Markers> Rows
{
get
{
return _rows;
}
set
{
_rows = value;
RaisePropertyChanged("Rows");
}
}
private bool _isDefault;
public bool IsDefault
{
get
{
return _isDefault;
}
set
{
_isDefault = value;
RaisePropertyChanged("IsDefault");
}
}
}
我想使用“SelectedSet”IsDefault属性设置单元格的IsEnabled属性
我试过上面的代码,但不起作用
类的定义如下:
<DataGrid Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="3" ItemsSource="{Binding SelectedSet.Rows}" IsSynchronizedWithCurrentItem="True" AutoGenerateColumns="False" CanUserAddRows="False" Style="{StaticResource DataGridStyle2}" HeadersVisibility="Column" SelectedItem="{Binding SelectedItem}" EnableRowVirtualization="False">
<DataGrid.Columns>
<DataGridTemplateColumn Width="30*" Header="{StaticResource RangeColumnHeader}" HeaderStyle="{StaticResource HeaderStyle2}" SortMemberPath="StartValue">
<DataGridTemplateColumn.CellStyle>
<DataTrigger Binding="{Binding SelectedSet.IsDefault}" Value="True">
<Setter Property="IsEnabled" Value="False"/>
</DataTrigger>
<DataTrigger Binding="{Binding SelectedSet.IsDefault}" Value="False">
<Setter Property="IsEnabled" Value="True"/>
</DataTrigger>
</DataGridTemplateColumn.CellStyle>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DatGrid>
public class UCSetModel : ViewModelBase
{
private Set _SelectedSet;
public Set SelectedSet
{
get
{
return _SelectedSet;
}
set
{
_SelectedSet = value;
RaisePropertyChanged("SelectedSet");
}
}
}
public class Set
{
private ObservableCollection<Markers> _rows;
public ObservableCollection<Markers> Rows
{
get
{
return _rows;
}
set
{
_rows = value;
RaisePropertyChanged("Rows");
}
}
private bool _isDefault;
public bool IsDefault
{
get
{
return _isDefault;
}
set
{
_isDefault = value;
RaisePropertyChanged("IsDefault");
}
}
}
公共类UCSetModel:ViewModelBase
{
专用集_SelectedSet;
公共集合选择集合
{
得到
{
返回_SelectedSet;
}
设置
{
_SelectedSet=值;
RaisePropertyChanged(“SelectedSet”);
}
}
}
公共类集
{
私有可观察收集行;
公共可观测收集行
{
得到
{
返回_行;
}
设置
{
_行=值;
RaisePropertyChanged(“行”);
}
}
私有布尔(bool)isDefault ;;
公共布尔值
{
得到
{
返回默认值;
}
设置
{
_isDefault=值;
RaisePropertyChanged(“IsDefault”);
}
}
}
我想绑定到行所来自的同一个“SelectedSet”的属性 您发布的标记甚至无法编译。这是:
<DataGridTemplateColumn.CellStyle>
<Style TargetType="DataGridCell">
<Style.Triggers>
<DataTrigger Binding="{Binding IsDefault}" Value="True">
<Setter Property="IsEnabled" Value="False"/>
</DataTrigger>
</Style.Triggers>
</Style>
</DataGridTemplateColumn.CellStyle>
这对我很有效
<DataTrigger Binding="{Binding Path=DataContext.SelectedSet.IsDefault,ElementName=SetWindow}" Value="True">
<Setter Property="IsEnabled" Value="False"/>
</DataTrigger>
是否设置了单个行/项的属性?或者应该同时启用/禁用该特定列中的所有单元格?是否检查了输出窗口中的绑定错误?Set是在视图模型中定义的对象,“Rows”是Set的属性,它是一个可观察的集合。我的观点是我想使用“Set”IsDefault属性设置单元格的IsEnabled属性。@SAT:那你为什么不告诉。。。?查看我编辑的答案。你的答案比我的实际问题更准确地解释了我的问题。但是解决方案不起作用。然后你需要告诉我们什么不起作用,什么“不起作用”实际上意味着什么,以及你的类是如何定义的。您应该阅读。然后将绑定路径更改为SelectedSet.IsDefault
。请参阅我的编辑。