我的自定義用戶控制元件中有 DataGrid。我想將可見性屬性(用于 DataGridTextColumn)系結到后面代碼上的某個屬性。
報表資料網格.xaml
<UserControl x:Class="DB_ME.Controls.ReportDataGrid"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:controls="clr-namespace:DB_ME.Controls"
xmlns:local="clr-namespace:DB_ME.Controls"
mc:Ignorable="d"
x:Name="Root"
d:DesignHeight="450" d:DesignWidth="800">
<StackPanel>
...
<DataGrid x:Name="ReportDG"
ItemsSource="{Binding ElementName=Root, Path=SourceData, Mode=TwoWay}"
AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Header="Name" Binding="{Binding Name, Mode=OneWay}"
Visibility="{Binding ElementName=Root, Path=TempVisibility}"/>
...
</DataGrid.Columns>
</DataGrid>
...
</StackPanel>
</UserControl>
ReportDataGrid.xaml.cs 背后的代碼
public partial class ReportDataGrid : UserControl
{
...
public Visibility TempVisibility
{
get
{
return Visibility.Collapsed;
}
}
...
}
但是這些代碼不起作用。我得到了下一個錯誤:
System.Windows.Data 錯誤:2:找不到目標元素的管理 FrameworkElement 或 FrameworkContentElement。系結運算式:路徑=臨時可見性;資料項=空;目標元素是“DataGridTextColumn”(HashCode=51251115);目標屬性是“可見性”(型別“可見性”)
有人可以幫助我嗎?我已經嘗試使用 ProxyElement,但這些沒有幫助
uj5u.com熱心網友回復:
A默認情況下DataGridColumn不繼承任何DataContext內容。這就是你的系結失敗的原因。
Freezable您可以按照此博客文章中的建議使用 a 來使系結起作用:
public class BindingProxy : Freezable
{
protected override Freezable CreateInstanceCore()
{
return new BindingProxy();
}
public object Data
{
get { return (object)GetValue(DataProperty); }
set { SetValue(DataProperty, value); }
}
public static readonly DependencyProperty DataProperty =
DependencyProperty.Register("Data", typeof(object), typeof(BindingProxy), new UIPropertyMetadata(null));
}
XAML:
<DataGrid.Resources>
<local:BindingProxy x:Key="proxy" Data="{Binding ElementName=Root}" />
</DataGrid.Resources>
...
<DataGridTextColumn Header="Name" Binding="{Binding Name, Mode=OneWay}"
Visibility="{Binding Data.TempVisibility, Source={StaticResource proxy}}"/>
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/437174.html
