gpt4 book ai didi

wpf - 如何将 DataGridTemplateColumn.Visibility 绑定(bind)到 DataGrid.ItemsSource 之外的属性?

转载 作者:行者123 更新时间:2023-12-03 21:21:16 25 4
gpt4 key购买 nike

我需要绑定(bind)VisibilityDataGridTemplateColumnDataGrid.ItemsSource 之外的属性,因为我需要将所有行中的这一列绑定(bind)到 ViewModel 中的一个属性,但据我所知,您可以将其绑定(bind)到 ItemsSource 中的某些内容或者你应该使用 ElementStyleEditingElementStyle我已经尝试过这段代码:

 <DataGridTemplateColumn Header="post" 
Visibility="{Binding DataContext.ProjectPostVisibility
, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=MvvmCommonControl:DataGrid}}"/>

而且我确定我的绑定(bind)是正确的,因为当我绑定(bind) DataGridCell.Visibility 时它可以正常工作如下所示:
<DataGridTemplateColumn Header="post">
<DataGridTemplateColumn.CellStyle>
<Style TargetType="DataGridCell">
<Setter Property="Visibility" Value="{Binding DataContext.ProjectPostVisibility,RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=MvvmCommonControl:DataGrid}}"/>
</Style>
</DataGridTemplateColumn.CellStyle>
</DataGridTemplateColumn >

最佳答案

在 DataGridTemplateColumn.CellStyle 中添加此 setter 并完成:

   <Setter Property="Visibility" Value="{Binding DataContext.isVisible, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=DataGrid}}"/>

如果您需要更多帮助,请查看下面的示例。
我希望删除按钮在项目级别不可见。首先,您必须确保您的 View 模型中有 isVisible 属性:
  private System.Windows.Visibility _isVisible;
public System.Windows.Visibility isVisible
{
get { return _isVisible; }
set
{
if (_isVisible != value)
{
_isVisible = value;
OnPropertyChanged("isVisible");
}
}
}

然后:
  if (isProj == false)
this.model.isVisible = Visibility.Visible;
else
this.model.isVisible = Visibility.Collapsed;

XAML:
<DataGridTemplateColumn  >
<DataGridTemplateColumn.CellTemplate >
<DataTemplate >
<Button x:Name="btnRemove" Content="X">
<Button.Style>
<Style TargetType="{x:Type Button}">
<Setter Property="FontWeight" Value="ExtraBold" />
<Setter Property="FontSize" Value="50" />
</Style>
</Button.Style>
</Button>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellStyle>
<Style TargetType="{x:Type DataGridCell}">
<Setter Property="Background" Value="Red"/>
<Setter Property="Visibility" Value="{Binding DataContext.isVisible, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=DataGrid}}"/>
</Style>
</DataGridTemplateColumn.CellStyle>

关于wpf - 如何将 DataGridTemplateColumn.Visibility 绑定(bind)到 DataGrid.ItemsSource 之外的属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15310467/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com