我有一个包含三列的DataGrid.
第三列中有一个删除按钮.它的可见性取决于名为'ControlsEnabled'的布尔属性.
DataGrid由"ObservableCollection"中的项填充.
问题是'ControlsEnabled'不是'ObservableCollection'中项目的属性,它不应该是.'ObservableCollection'是另一个类的属性.
问题:我应该如何更改我的XAML描述以解决我的问题?
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Path=field1}"
Width="140"
Header="head1"/>
<DataGridTextColumn Binding="{Binding Path=field2}"
Width="140"
MinWidth="50"
Header="head2"/>
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button Padding="5"
Click="DeleteButton_Click"
Tag="{Binding}"
Content="X"
Visibility="{Binding Path=ControlsEnabled, Converter={StaticResource boolToVisibilityConverter}}">
<Button.ToolTip>
<TextBlock>
Delete
</TextBlock>
</Button.ToolTip>
</Button>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
Run Code Online (Sandbox Code Playgroud)
谢谢!
您可以使用Binding RelativeSource.阅读如何使用与RelativeSource的WPF绑定?
例如:
{Binding Path=PathToProperty, RelativeSource={RelativeSource AncestorType={x:Type typeOfAncestor}}}
Run Code Online (Sandbox Code Playgroud)
或使用Binding ElementName跳转到特定的控制数据上下文.
<Window ... x:Name="_this">
<Button Visibility="{Binding ElementName=_this, Path=DataContext.ControlsEnabled, Converter={StaticResource boolToVisibilityConverter}}" />
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
706 次 |
| 最近记录: |