WPF DataGridHyperlinkColumn:根据条件隐藏或显示超链接

时间:2018-04-05 09:18:09

标签: c# wpf datagrid

我有一个WPF MVVM应用程序。在主WPF窗口中,我有一个WPF数据网格,它有一些列。其中一个是DataGridHyperlinkColumn类型。此列包含一个链接,用于在用户点击时执行一些操作。

数据网格绑定到数据模型类,比方说MyDataGridModel(我只是在这里显示必要的对象来理解我的情况):

public class MyDataGridModel : NotifyBase
{
   // Properties, members, methods, etc.

   public MyLinkData myLinkData { get; set; }
}

DataGridHyperlinkColumn列绑定到数据模型,假设 MyLinkData

MyLinkData

public class MyLinkData
{
    private string linkText = string.Empty;
    private string linkValue = string.Empty;

    public string LinkText
    {
        get
        {
            return this.linkText;
        }

        private set
        {
            if (!this.linkText.Equals(value))
            {
                this.linkText = value;
            }
        }
    }

    public string LinkValue
    {
        get
        {
            return this.linkValue;
        }

        private set
        {
            if (!this.linkValue.Equals(value))
            {
                this.linkValue = value;
            }
        }
    }

    #region Constructors

    public MyLinkData(string linkText, string linkValue)
    {
        this.LinkText = linkText;
        this.LinkValue = linkValue;
    }

    #endregion
}

查看

<my:DataGridHyperlinkColumn 
                            Binding="{Binding myLinkData.LinkValue}" 
                            ContentBinding="{Binding myLinkData.LinkText}">
    <my:DataGridHyperlinkColumn.ElementStyle>
        <Style TargetType="TextBlock">                
            <EventSetter Event="PreviewMouseLeftButtonDown" Handler="OnCellHyperlinkClick" />
        </Style>
    </my:DataGridHyperlinkColumn.ElementStyle>
    <my:DataGridHyperlinkColumn.CellStyle>
        <Style TargetType="my:DataGridCell">
            <Style.Resources>
                <Style TargetType="Hyperlink">
                    <Style.Triggers>
                        <DataTrigger Binding="{Binding myLinkData.LinkValue}" Value="">
                            <Setter Property="IsEnabled" Value="False" />
                        </DataTrigger>
                    </Style.Triggers>
                </Style>
            </Style.Resources>
        </Style>
    </my:DataGridHyperlinkColumn.CellStyle>
</my:DataGridHyperlinkColumn>

当链接值包含空字符串时,此链接被禁用,否则启用。

现在,我想要做的是在链接值包含空字符串而不是禁用它时隐藏链接。那我怎么能这样做呢?

我正在考虑更改链接颜色以使其不可见但是我可能会在选择行时使用(颜色为蓝色)以及其他一些使事情变得更加困难的事情(在我的情况下,行也会根据颜色改变颜色)一些条件)。

0 个答案:

没有答案