自定义控件的WPF问题

时间:2013-05-19 20:26:37

标签: wpf xaml controls custom-controls datatemplate

我在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类具有相同的值。

0 个答案:

没有答案