我在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类),则可见性为Visible或Collapsed。控件的可见性(Myclass XAML)不会绑定到DataContext可见性。 此外,如果我将构造函数中的可见性设置为Collapsed,那么它仍然在Collapsed上。我还尝试了触发器和额外的布尔属性显示绑定到网格可见性(当然还有转换器)。
我现在该怎么办?我只是想要像MyClass Control中的Visibility这样的一些Control属性与MyClass类具有相同的值。