0

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

4

0 回答 0