我在 WPF 中有一个自定义控件
public class MyClass: Control, INotifyPropertyChanged
{
private Boolean _hasData;
public Boolean HasData
{
get { return _hasData};
set
{
_hasData = value;
OnPropertyChanged("HasData");
this.Visibility = value ? Visibility.Visible : Visibility.Collapsed;
}
}
#region INotifyPropertyChanged members
// code
#endregion
}
现在事情是这样的:我应该使用控制模板还是数据模板?自定义控件的目的:显示我从服务中收到的数据。
我尝试了自定义模板,但控件的属性未与 XAML 代码的属性绑定/连接。我的控件模板的 DataContext 是控件本身 (MyClass)。
<ControlTemplate TargetType="{x:Type controls:MyClass}">
<Grid Visibility="{Binding Visibility, UpdateSourceTrigger=PropertyChanged}"}">
<TextBlock Text="Contains Data"/>
</Grid>
</ControlTemplate>
如果我检查 DataContext (这是 Myclass 类),可见性是可见或折叠。控件的 Visibility (Myclass XAML) 不会绑定到 DataContext Visibility。此外,如果我将构造函数中的可见性设置为 Collapsed,那么它仍然处于 Collapsed 状态。我还尝试了触发器和绑定到网格可见性的额外布尔属性 Show(当然使用转换器)。
我现在该怎么办?我只希望 MyClass Control 中的一些 Control 属性(如 Visibility)具有与 MyClass 类相同的值。